【问题标题】:Add members to JavaPoet向 JavaPoet 添加成员
【发布时间】:2016-09-02 15:28:37
【问题描述】:

我尝试在 JavaPoet api 中创建 TestSuite。 我在 testClasses 中有我的 junit 类的 List,所以我想添加成员注释,但 addmember 允许我们一次只添加一个对象,所以我如何添加所有列表?

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

【问题讨论】:

    标签: java junit javapoet


    【解决方案1】:

    尝试为构建器提取变量。

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

    【讨论】:

    • 寻找我的答案
    【解决方案2】:
    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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 2020-07-07
      相关资源
      最近更新 更多