IntelliJ IDEA社区版2017.3运行含Arquillian的TestNG测试失败求解决
解决IntelliJ IDEA中Arquillian与TestNG测试混跑失败的问题
我之前也碰到过一模一样的问题——当Arquillian测试和常规TestNG测试混在同一个目录时,直接右键跑整个/test/java的测试,总会因为Arquillian必须依赖Maven的容器初始化逻辑而失败,导致整个测试套件要么报错要么被忽略。针对你的IntelliJ IDEA 2017.3社区版,这里有几个实用的解决办法:
方案1:用自定义注解过滤Arquillian测试
- 先给所有Arquillian测试类加一个自定义注解,比如
@ArquillianTest(自己写个空注解类就行) - 然后在IDEA里创建专属的TestNG运行配置:
- 点击顶部菜单栏的
Run→Edit Configurations - 点
+号选择TestNG - 在
Test kind里选Pattern,输入!@your.package.ArquillianTest(替换成你实际的注解全类名) - 设置
Working directory为项目根目录,Classpath of module选对应的项目模块
- 点击顶部菜单栏的
- 以后跑全量测试时就用这个配置,会自动跳过Arquillian测试
方案2:把Arquillian测试单独归类到子目录
- 在
src/test/java下建个arquillian子目录,把所有Arquillian测试类移进去 - 右键运行常规测试时,只选择原来的测试目录(别选
arquillian子目录) - 要跑Arquillian测试的话,直接在IDEA的终端里执行Maven命令:
mvn test -Dtest=Arquillian*(可以根据你的测试类命名规则调整通配符)
方案3:利用TestNG分组功能分离测试
- 在所有Arquillian测试的
@Test注解里加上分组:@Test(groups = "arquillian") - 建两个TestNG运行配置:
- 一个用来跑常规测试:在
Groups里输入!arquillian - 另一个专门跑Arquillian测试:在
Groups里输入arquillian(不过更推荐直接用Maven命令跑这个分组,避免配置麻烦)
- 一个用来跑常规测试:在
额外小贴士
- 如果非要用IDEA直接跑Arquillian测试,得手动在运行配置里加Maven依赖和容器启动参数,这个配置起来挺繁琐的,不如直接用
mvn test省心 - 记得检查
pom.xml里的Arquillian插件和依赖配置是否正确,这是Maven能正常跑Arquillian测试的前提
内容的提问来源于stack exchange,提问作者Zeus
相关产品推荐
相关产品推荐

