Nat*_*ell 0 java junit4 junit3
我正在编写一些JUnit测试,它们从第三方库扩展了一个类.超类扩展TestCase,所以根据定义,我的子类也是如此.
在我的子类中,我用前缀编写测试方法,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 {
}
}
Run Code Online (Sandbox Code Playgroud)
不扩展第三方测试类不是一种选择.(对于它的价值,它是Spring,它AbstractXmlFlowExecutionTests反过来扩展了其他Spring类,最终扩展TestCase.超类中的方法提供了如此多的设置和样板,没有扩展它们只是为了使用JUnit 4会适得其反)
如上所述,我们使用JUnit 4 @Test注释的动机之一是它允许我们更好地命名我们的方法.我们的观点是这个词test是多余的,因为该类显然是一个测试类,并且该方法带有注释@Test.我们以BDD样式编写测试,因此我们的测试方法名称描述了被测单元应该做什么 - 我们的命名约定是public void shouldDoSomething()
有没有人知道是否有可能混合' TestCase使用JUnit 4的方法扩展JUnit 3的''匹配测试类@Test?如果是这样,怎么样?
谢谢
内森
JUnit4样式测试不应junit.framework.TestCase直接或间接扩展.如果这样做,您经常会遇到混乱的行为(由@Rule忽略注释的字段,测试失败,因为JUnit没有调用基类方法等).测试可以以JUnit4风格或JUnit3风格运行,具体取决于它们的运行方式.
您可以选择坚持使用JUnit3,或者说服基类的维护者创建支持JUnit4(规则,运行器等)的类.
| 归档时间: |
|
| 查看次数: |
846 次 |
| 最近记录: |