2016-09-01 5 views
0

JavaPoet APIでTestSuiteを作成しようとしました。 testClassesにjunitクラスのリストがあるので、メンバー注釈を追加したいがaddmemberは1つのオブジェクトを時間に追加できるようにするため、どのようにすべてのリストを追加できますか?JavaPoetにメンバーを追加

.addAnnotation(AnnotationSpec.builder(SuiteClasses.class) 
.addMember("value", "$T.class", testClasses.toArray()).build()) 

答えて

1

ビルダーの変数を抽出してみてください。私の答えのための

AnnotationSpec.Builder ab = AnnotationSpec.builder(SuiteClasses.class); 
for (String s : strings) { 
    ab.addMember(s, "$S", lookup(s)); 
} 
AnnotationSpec annotation = ab.build(); 
+0

外観 –

0
import com.squareup.javapoet.AnnotationSpec; 
import com.squareup.javapoet.JavaFile; 
import com.squareup.javapoet.MethodSpec; 
import com.squareup.javapoet.TypeSpec; 
import org.junit.Test; 

import javax.lang.model.element.Modifier; 
import java.io.IOException; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.util.List; 

public class Javapoet { 

    public void generateTestSuite(List<Class> testClasses) throws IOException { 
     MethodSpec test = MethodSpec.methodBuilder("test").addModifiers(Modifier.PUBLIC).returns(void.class) 
       .addAnnotation(Test.class).build(); 

     TypeSpec testSuite = TypeSpec.classBuilder("TestSuite").addModifiers(Modifier.PUBLIC).addAnnotation(

       AnnotationSpec.Builder ab = AnnotationSpec.builder(SuiteClasses.class); 
     for (String s : strings) { 
      ab.addMember(s, "$S", lookup(s)); 
     } 
     AnnotationSpec annotation = ab.build(); 


     JavaFile javaFile = JavaFile.builder("", testSuite).build(); 

     Path path = Paths.get("src/test/java"); 
     javaFile.writeTo(path); 
    } 
} 
関連する問題