首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将成员添加到JavaPoet

将成员添加到JavaPoet
EN

Stack Overflow用户
提问于 2016-09-01 19:18:16
回答 2查看 548关注 0票数 0

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

代码语言:javascript
复制
.addAnnotation(AnnotationSpec.builder(SuiteClasses.class)
.addMember("value", "$T.class", testClasses.toArray()).build())
EN

回答 2

Stack Overflow用户

发布于 2016-09-01 20:10:07

尝试为构建器提取一个变量。

代码语言:javascript
复制
AnnotationSpec.Builder ab = AnnotationSpec.builder(SuiteClasses.class);
for (String s : strings) {
  ab.addMember(s, "$S", lookup(s));
}
AnnotationSpec annotation = ab.build();
票数 1
EN

Stack Overflow用户

发布于 2016-09-02 15:28:38

代码语言:javascript
复制
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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39270117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档