Java 如何完全防止执行JUnit套件?

Java 如何完全防止执行JUnit套件?,java,gradle,junit,junit4,Java,Gradle,Junit,Junit4,我们正在从我们自己的专有java构建工具转向gradle 我们自己的工具使用ANT和一个定制的org.apache.tools.ANT.types.selectors.BaseExtendSelector来提取用JUnit的@Test注释的所有内容,从而产生了大约4400个测试 运行gradletest,我发现大约运行了5000个测试 进一步调查显示,JUnit的@Suite有多种用法: @RunWith(Suite.class) @Suite.SuiteClasses({ FooTest

我们正在从我们自己的专有java构建工具转向gradle

我们自己的工具使用ANT和一个定制的
org.apache.tools.ANT.types.selectors.BaseExtendSelector
来提取用JUnit的
@Test
注释的所有内容,从而产生了大约4400个测试

运行
gradletest
,我发现大约运行了5000个测试

进一步调查显示,JUnit的
@Suite
有多种用法:

@RunWith(Suite.class)
@Suite.SuiteClasses({
   FooTest.class,
   BarTest.class, ...
})
public class FooBarSuite {
}
如果列出的测试最为精确。。。所有“普通”单元测试都用
@Test
注释。 所以问题是gradle“找到”了所有
@测试
,但也找到了所有
@套件
,并因此运行了两次

因此:gradle中是否有一种机制可以在执行时忽略所有
@Suite
类(而不通过名称手动指定它们)


注意:我确实知道JUnit类别,但这种方法需要在这里重新编写我们的代码库。我正在寻找一种不需要编辑所有套装的解决方案。

我假设您不想接触所有课程。如果你还想,那么也许对你来说是件好事。以@WangDu发布的链接为例:这有用吗<代码>测试{exclude'***/*Suite.class'}。虽然只有当您的类都以
Suite
@GhostCat结尾时,这才有效,但您不能使用
排除'**/AllTests.class'
附加?;)@利诺:有时候最好的技术解决方案是。。。与人交谈。所有这些套件都是多年前创建的,当时我们没有运行多个测试的好方法。通过我们新的gradle设置,每个人都可以在几分钟内运行所有单元测试。。。所以这些套房的所有业主都同意将其删除。另一方面,完全技术性的答案似乎是:这是不可能的。必须手动识别相应的套件类并显式列出它们。否则,真正的发明将需要通过增强默认测试任务来允许排除对特定java类对象的“属性”的实际过滤。