我可以混合使用 JUnit 3 和 JUnit 4 吗?
Can I mix JUnit 3 and JUnit 4?
我正在编写一些从第三方库扩展 class 的 JUnit 测试。 super class 扩展了 TestCase
,所以根据定义,我的 subclass.
也是如此
在我的子class中,我用前缀 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 {
}
}
不扩展第 3 方测试 class 不是一个选项。 (就其价值而言,它是 Spring 的 AbstractXmlFlowExecutionTests
,它又扩展了其他 Spring classes,最终扩展了 TestCase
。super 中的方法classes 提供了如此多的设置和样板,如果不简单地扩展这些以使用 JUnit 4 将会适得其反)
如前所述,我们使用 JUnit 4 的 @Test
注释的动机之一是它允许我们更好地命名我们的方法。我们的观点是 test
这个词是多余的,因为 class 显然是一个测试 class,并且该方法用 @Test
注释。我们以 BDD 风格编写测试,因此我们的测试方法名称描述了被测单元应该做什么——我们的命名约定是 public void shouldDoSomething()
有谁知道是否可以将扩展 JUnit 3 TestCase
的'n'匹配测试 class 与使用 JUnit 4 @Test
的方法混合使用?如果可以,怎么样?
谢谢
内森
我已经看到几个属于同一问题的 SO 问题,但它们与 Android 或测试套件有关,因此与我的问题不完全相同。例如:
Is it possible to mix JUnit3 and JUnit4?
JUnit4 样式测试不应直接或间接扩展 junit.framework.TestCase
。如果这样做,您通常会遇到令人困惑的行为(被 @Rule
注释的字段被忽略,测试失败,因为基 class 方法没有被 JUnit 调用,等等)。测试可能是 运行 作为 JUnit4 风格或 JUnit3 风格,具体取决于它们如何 运行。
您的选择是要么坚持使用 JUnit3,要么说服您的基础 class 的维护者创建 class 支持 JUnit4 的系统(规则、运行程序等)。
我正在编写一些从第三方库扩展 class 的 JUnit 测试。 super class 扩展了 TestCase
,所以根据定义,我的 subclass.
在我的子class中,我用前缀 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 {
}
}
不扩展第 3 方测试 class 不是一个选项。 (就其价值而言,它是 Spring 的 AbstractXmlFlowExecutionTests
,它又扩展了其他 Spring classes,最终扩展了 TestCase
。super 中的方法classes 提供了如此多的设置和样板,如果不简单地扩展这些以使用 JUnit 4 将会适得其反)
如前所述,我们使用 JUnit 4 的 @Test
注释的动机之一是它允许我们更好地命名我们的方法。我们的观点是 test
这个词是多余的,因为 class 显然是一个测试 class,并且该方法用 @Test
注释。我们以 BDD 风格编写测试,因此我们的测试方法名称描述了被测单元应该做什么——我们的命名约定是 public void shouldDoSomething()
有谁知道是否可以将扩展 JUnit 3 TestCase
的'n'匹配测试 class 与使用 JUnit 4 @Test
的方法混合使用?如果可以,怎么样?
谢谢
内森
我已经看到几个属于同一问题的 SO 问题,但它们与 Android 或测试套件有关,因此与我的问题不完全相同。例如:
Is it possible to mix JUnit3 and JUnit4?
JUnit4 样式测试不应直接或间接扩展 junit.framework.TestCase
。如果这样做,您通常会遇到令人困惑的行为(被 @Rule
注释的字段被忽略,测试失败,因为基 class 方法没有被 JUnit 调用,等等)。测试可能是 运行 作为 JUnit4 风格或 JUnit3 风格,具体取决于它们如何 运行。
您的选择是要么坚持使用 JUnit3,要么说服您的基础 class 的维护者创建 class 支持 JUnit4 的系统(规则、运行程序等)。