在IntelliJ IDEA中,我是否只能运行与正则表达式匹配的测试?

时间:2017-03-31 15:29:56

标签: regex intellij-idea pattern-matching

是否可以在IntelliJ中创建一个Run / Debug配置,只能获取与正则表达式匹配的文件?

我想要运行所有单元测试。我不想运行同事编写的集成测试。集成测试包含文本" IT",所以我认为以下正则表达式会这样做:

^((?!IT).)*$ 

但它没有。

修改

作为一个简单的例子,我尝试了以下正则表达式:

^.*IT.*$

(这与我想要实现的完全相反),但我仍然失败了。它仍然会检测每一个测试并运行它。

获取的示例测试:

com.my_company.session.SessionTest.java
com.my_company.test.server.api.ITAuthentication.java

enter image description here

这就是测试结果面板的样子

enter image description here

3 个答案:

答案 0 :(得分:4)

我已经provided the answer介绍了如何排除*IT.java测试,但由于您的问题不同而且您想排除*IT*.java测试(任何具有{{1}的测试在它的名字中),模式会有所不同:

IT

Exclude IT

请注意,它不适用于IntelliJ IDEA 2017.1中的JUnit 5,有一个针对2017.2版本修复的已知错误:

答案 1 :(得分:2)

简答:

不适用于JUnit 5

答案很长

CrazyCoder对我的post on Jetbrain's forum做出了回应。他提供了答案并上传了他的工作项目。这很有用,因为我确认模式匹配在他的项目中运行良好。

然后另一位Jetbrain工程师回复了我的操作方法请求。他指出IDEA-164088, JUnit 5 doesn't support pattern configurations

这是一个已知问题,将于2017年4月发布的2017.2.X版本上修复。

<强>解决方案

直到那时的解决方法是使用JUnit5标签

@Tag("junit")
public class MyTest 

然后运行以下配置,该配置仅选取使用该特定标记注释的测试类。

enter image description here

P.S。实际上,只要测试类的数量有限,使用Tags似乎是给定任务的更优雅的解决方案。

答案 2 :(得分:0)

您可以在一个类中运行所有测试用例,然后>>按住 Ctrl 单击鼠标 >>运行,然后打开config run和复制图案以进行更多编辑。