0

JavaPoet api で TestSuite を作成しようとしました。testClasses に JUnit クラスの List があるので、メンバー アノテーションを追加したいのですが、addmember では一度に 1 つのオブジェクトしか追加できないため、すべてのリストを追加するにはどうすればよいですか?

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

2 に答える 2

1

ビルダーの変数を抽出してみてください。

AnnotationSpec.Builder ab = AnnotationSpec.builder(SuiteClasses.class);
for (String s : strings) {
  ab.addMember(s, "$S", lookup(s));
}
AnnotationSpec annotation = ab.build();
于 2016-09-01T12:10:07.343 に答える
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);
    }
}
于 2016-09-02T07:28:37.723 に答える