我正在写一些JUnit测试,从第三方库扩展一个类。超类延伸TestCase
,所以根据定义,我的子类也是如此。我可以混合使用JUnit 3和JUnit 4吗?
在我的子类中,我编写了测试方法,前缀为test
,这些都会被执行。
然而,有许多原因,我们想移动到JUnit 4中(这些原因之一是,我们不希望有前缀test
测试方法)
我试图简单地写我的使用JUnit 4 @Test
注释进行新测试,但这些方法不会被执行。
例如:
public abstract class UtilityClassFromThirdPartyLibrary extends TestCase {
}
public class MyTestClass extends UtilityClassFromThirdPartyLibrary {
public void testThisMethodIsInvokedBecauseItStartsWithTest {
}
@Test
public void thisMethodDoesNotGetInvoked {
}
}
不延长的第三方测试类是不是一种选择。 (值得注意的是,Spring的AbstractXmlFlowExecutionTests
反过来扩展了其他Spring类,最终扩展为TestCase
。超类中的方法提供了如此多的设置和样板,而不是仅仅使用JUnit 4扩展这些类将会适得其反)
如前所述,我们使用JUnit 4的@Test
注解的动机之一是它允许我们更好地为我们的方法命名。我们的观点是test
这个词是多余的,因为该类明显是一个测试类,并且该方法用@Test
进行了注释。我们用BDD风格编写我们的测试,所以我们的测试方法名称描述了被测单元应该做什么 - 我们的命名约定是public void shouldDoSomething()
有谁知道它是否可能混合使用扩展的测试类JUnit 3的TestCase
与使用JUnit 4的@Test
?的方法,如果是,如何?
感谢
弥敦道
我已经看到了几个,涉及到相同的问题,所以问题,但它们与Android或测试套件,所以不如完全一样我题。 EG:
Is it possible to mix JUnit3 and JUnit4?
https://stackoverflow.com/questions/32393330/run-junit-3-and-junit-4-tests-in-the-same-class
你将如何运行你的测试? Maven的?的IntelliJ?蚀? –
是的,应该提到,测试是作为我们的Maven构建的一部分运行的,但也在开发人员IDE中(我们可以选择我们的IDE,并使用IntelliJ和Eclipse) –
您是否尝试过使用'@ RunWith'注释[spring junit runner](http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/context/junit4/SpringJUnit4ClassRunner.html)? –