Eclipse JUnit4:使用名称模式排除测试

发布于 2024-08-23 20:00:43 字数 612 浏览 2 评论 0原文

是否可以在 Eclipse 中的 JUnit Run 配置中指定一个名称模式(例如 **/integration/*Test),在运行项目的所有测试时应将其从测试运行中排除?

查看运行/调试配置中的选项,我认为这个问题可以简化为:是否可以排除基于 junit runner 命令行参数的某些测试。

我对创建(和维护) 测试套件

另一种替代解决方案(尽管仍然对此不感兴趣)是创建包含测试文件的单独目录:

  • yourProject/tests
  • yourProject/integration-tests

并选择该目录以运行其中的所有测试(或更改“运行所有在选定的项目、包或源文件夹中进行测试”(位于“运行配置”的“测试”选项卡中)。

我正在使用:

  • Eclipse 3.5
  • JUnit 4

非常感谢任何提示/建议!

Is it possible to specify in the JUnit Run configuration in Eclipse a name pattern (say **/integration/*Test) that should be excluded from the test run when running all tests of a project?

Looking at options in the Run/Debug Configuration I presume this question could be reduced to: is it possible exclude certain tests based on junit runner command line parameters.

I'm not interested in creating (and maintaining) Test Suites.

Another alternative solution (still not interested in that one, though) is to create to separate directories containing test files:

  • yourProject/tests
  • yourProject/integration-tests

and selecting that directory in order to run all tests in it (or changing the "Run all tests in the selected project, package or source folder" in the Test tab of the Run Configuration).

I'm using:

  • Eclipse 3.5
  • JUnit 4

Any tips/advice greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

他是夢罘是命 2024-08-30 20:00:43

您可以扩展 Suite 类,覆盖

public Suite(Class klass, RunnerBuilder builder) throws InitializationError {
    this(builder, klass, getAnnotatedClasses(klass));
}

但不是带注释的类返回您想要的类。我打赌有很多方法可以做到这一点,但我会扫描类路径中的类文件夹,找到其中的所有测试类并忽略您不喜欢的类。 Class.forName 会将名称转换为类。

你甚至可以做 jUnit4 风格的注释

@RunWith(IgnoreSuite.class)
@IgnoreTests("integration")
public class NormalTests {
}

You could extend the Suite class, override

public Suite(Class klass, RunnerBuilder builder) throws InitializationError {
    this(builder, klass, getAnnotatedClasses(klass));
}

but instead of annotated classes return classes you want. I bet there is a lot of ways to do it, but Id scan the classpath for classes folder, find all test classes inside and ignore the ones you dont like. Class.forName will turn names into Classes.

You could even do jUnit4-style annotation

@RunWith(IgnoreSuite.class)
@IgnoreTests("integration")
public class NormalTests {
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文