Java 如何仅在通过另一个测试时运行测试类?

Java 如何仅在通过另一个测试时运行测试类?,java,testing,junit,test-suite,Java,Testing,Junit,Test Suite,我正在做一些Junit测试,我需要知道如何仅在通过另一个类的特定测试时运行测试类。Junit中有“类别”功能。(见:)这一问题已在中得到答复 在@Before函数中,您需要从系统中检索运行时值,并检查它是否符合您的要求。如果它不IMHO,那么一切都会停止,这是一种糟糕的做法,即使在设计良好的集成测试套件中也是如此。我鼓励你重新思考你的整体测试类设计 如果这些测试真的是单元测试,那么它们应该是原子的,相互独立。请仔细阅读 话虽如此,我经常使用JUnit4.x构建和运行相当大的集成测试套件(测试RE

我正在做一些Junit测试,我需要知道如何仅在通过另一个类的特定测试时运行测试类。

Junit中有“类别”功能。(见:)

这一问题已在中得到答复


在@Before函数中,您需要从系统中检索运行时值,并检查它是否符合您的要求。如果它不

IMHO,那么一切都会停止,这是一种糟糕的做法,即使在设计良好的集成测试套件中也是如此。我鼓励你重新思考你的整体测试类设计

如果这些测试真的是单元测试,那么它们应该是原子的,相互独立。请仔细阅读

话虽如此,我经常使用JUnit4.x构建和运行相当大的集成测试套件(测试RESTful服务响应的后端功能测试)。如果这是您的用例,我建议重新构造您的测试,这样您就不会在TestClassA中有一个测试依赖于TestClassB中的一个测试。这是一个坏主意,因为它会使你的测试更加脆弱。对于其他开发人员来说,很难理解您的测试的意图,整体而言

当我发现我在多个测试类之间存在依赖关系时,我已经为这两个测试类分解出一个“测试超类”,并在该超类中执行“设置工作”。或者,您可以分解出一个实用程序类,该类包含用于创建某种复杂测试条件的静态方法


但是,即使使用JUnit作为运行此类“集成”测试的工具,也应该谨慎地进行。

理想情况下,您不应该依赖其他测试用例来运行测试用例。将它们作为一个测试用例。这并不意味着测试B必须在测试A之后运行,可能是测试A很快,检查应用程序是否启动,测试B很慢,并检查一些更具体的东西,所以如果测试A失败,为什么还要麻烦测试B。@CaptainMan:为了澄清,我专门回答了原始海报的问题:“我正在做一些Junit测试,我需要知道只有在通过另一个类的特定测试时如何运行测试类。”这个问题正是“测试[类]B必须在测试a之后运行”我认为我的观点措词不当。我想说的是,“如何在a之后运行B”和只有A通过了我才能跑B。@CaptainMan:我明白了,同意。