假设我在Eclips项目中有一组源文件夹:
MyProject
base/src/impl
base/src/test
common/src/api
common/src/test
common/src/junit
请注意,这些不是包,它们是源文件夹,每个包内都有一个包层次结构,它们可以是相同的。假设我在base / src / impl文件夹中有一个类com.foo.myproject.DoSomething,我可能在base / src / Test文件夹中有一个名为com.foo.myproject.DoSomethingTest的Test,也许是com.foo .myproject.DoSomethingUnitTest在同一包层次结构下的另一个源文件夹中。
我需要做的是运行某些源文件夹下的所有测试。也许所有这些都在junit文件夹中,但没有来自测试文件夹。
使用junit搜索模式从Ant中可以正常工作,例如:
<include name="**/src/junit" />
但是,我希望能够从Eclipse获得完全相同的运行配置,而无需调用Ant。由于已经有很多项目,包和数千个测试类,我正在寻找一种“懒惰”的方式来完成这项工作,这意味着,无需更改项目结构或不必使用复杂的测试套件。
我尝试过的一种方法是使用ClasspathSuite使用的org.springframework.core.io.support.PathMatchingResourcePatternResolver
,但在classpath中查找资源总是在一个单独的类位置查看合并的源文件夹,因此我无法再在等级我打算这样做。
我正在寻找两种方法:
1. Filter using some TestSuite
2. Filter using some JUNIT Runner Plugin in Eclipse (is there any that can do what I need?)
谢谢!
答案 0 :(得分:5)
您可以右键单击源文件夹,然后选择Run As&gt; JUnit测试。
这将仅在此源文件夹中运行单元测试。
或者,在编辑“运行配置”时,您可以选择
Run all tests in the selected project, package or source folder:
按search
并选择您要运行单元测试的文件夹。
请参阅Eclipse帮助的Writing and Running JUnit tests上的“自定义测试配置”。
Same page介绍了如何使用New Test Suite向导创建自定义测试套件。
答案 1 :(得分:2)
这是一个似乎可以满足你想要的项目:
查找“Classpath属性注释”以设置从中进行测试的文件夹。
此外,如果你的测试类确实被命名为接缝(所有单元测试类都有后缀UnitTest),那么你也可以使用@ClassnameFilters
注释。
答案 2 :(得分:0)
我知道这很老了,但是为了后代-JUnit 5现在具有可用于执行此操作的标签(请参见https://junit.org/junit5/docs/current/user-guide/#writing-tests-tagging-and-filtering)。您可以使用特定标签来标记所有集成测试,然后在测试启动配置中可以使用该标签排除测试(反之亦然-标记所有纯单元测试并仅包括那些)。
这与JUnit 4类别的操作类似,在您已经考虑并拒绝的一条评论中,我可以看到JUnit 4类别,这是因为手动迁移的工作量太大而无法自动迁移的风险太大。因此,根据您的情况,它可能不是您的选择。请注意,可以在测试类级别添加标签,而不仅仅是在方法级别添加标签,因此在您的情况下,这可能会使迁移变得更容易。但是,无论这是否不是具有悠久历史和惯性的项目的最佳解决方案,我都认为这是“未开发”项目的理想方法,因此,我仍然认为值得将其添加为解决方案,以防万一对其他人有用。