如何在另一个测试类中重用JUnit测试?
举例来说:
public TestClass1 {
@Test
public void testSomething(){...}
}
public TestClass2 {
@Test
public void testSomethingAndSomethingElse() {
// Somehow execute testSomething()
// and then test something else
}
}
5条答案
按热度按时间snvhrwxg1#
一般来说,避免这种情况。它倾向于使测试更加脆弱。如果
TestClass1
失败,则TestClass2
隐式失败,这至少是出于以下原因而不可取的:偶尔共享测试代码部分是有用的,特别是对于集成测试。以下是您可以在不依赖于测试本身的情况下如何做到这一点:
或者,你可以使用一个助手类,完全避免继承。Assert和类似的东西可以放在
somethingHelper()
方法中。不要直接在
TestClass2
中调用TestClass1
的方法。这样测试用例的可读性会降低,并可能导致spaghetti frittata。tkclm6bt2#
像往常一样,你可以:
1.从
TestClass1
扩展TestClass2
1.使用委派从
TestClass2
访问TestClass1
:例一:
例二:
xe55xuns3#
这在使用不同的配置运行测试时很常见。别担心,继续吧。
在第一步中,创建您自己的测试,而不考虑任何配置:
然后,扩展测试类并添加一些配置:
不需要进行特定的配置,但这在可配置系统中非常常见(系统的主要功能必须对每个配置有效)。
在另一个测试用例中:
例如,可能存在加密和解密过程,其中必须识别加密>解密的序列。另一方面,当测试过程是唯一的时,有不同的算法要使用。
zzlelutf4#
从逻辑上讲,没有理由从一个测试方法调用另一个测试方法。任何运行一个测试的工具都可以轻松地运行包中的所有测试。但如果需要,可以像调用其他类中的其他方法一样调用它。
您最可能要做的是为这两种测试方法执行一些通用设置。您可以将
that
代码放在公共类的实用方法中,并在两个测试中调用公共代码。yzuktlbb5#
根据以上所有答案,扩展类主要在父类具有
Autowired
依赖项时起作用。接下来,不要忘记将
@Disabled
添加到父类中。这将确保您的测试只运行一次。扩展测试类时,首先运行所有父测试用例,然后运行子类测试。这就造成了口是心非。将@Disabled
添加到父类不会直接运行父类测试用例。这些测试用例将在子类测试用例运行时运行。