我尝试在JavaPoet api中创建TestSuite。我的junit类在testClasses中有list,所以我想添加成员注释,但是addmember允许我们一次只添加一个对象,那么我如何添加所有List呢?
.addAnnotation(AnnotationSpec.builder(SuiteClasses.class)
.addMember("value", "$T.class", testClasses.toArray()).build())发布于 2016-09-01 20:10:07
尝试为构建器提取一个变量。
AnnotationSpec.Builder ab = AnnotationSpec.builder(SuiteClasses.class);
for (String s : strings) {
ab.addMember(s, "$S", lookup(s));
}
AnnotationSpec annotation = ab.build();发布于 2016-09-02 15:28:38
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);
}
}https://stackoverflow.com/questions/39270117
复制相似问题