Test - @Test注解(Junit4) 与 继承TestCase(Junit3) 混用问题及原因

回到顶部(go to top)

前言

在作单元测试的时候,可能使用@Test注解执行一个测试用例,或者测试类继承junit.framework.TestCase,方法名为test前缀执行测试用例,如下:

1. 使用@Test注解

public class Junit4Test {

@Test
public void testX() {
Assert.assertEquals(0, 0);
}
}

2. 继承TestCase

public class Junit3Test extends TestCase {

public void testX() {
assertEquals(0, 0);
}
}

回到顶部(go to top)

@Test注解与TestCase的区别

继承TestCase:Junit3的方式,方法名以test为前缀

@Test注解:Junit4的方式,方法上使用注解@Test

p.s. :Junit4为了兼容性,jar包里打包的有Junit3的代码

 

回到顶部(go to top)

混合使用及可能问题和原因

示例代码如下:

public class JunitTest extends TestCase {

@Test
public void testX() {
assertEquals(0, 0);
}
}
有一些不清楚的同学刚用的时候,可能会这样使用(如不清楚原理,代码模仿等),优点也有,比如使用断言方法不用静态的导入org.junit.Assert类,因为直接继承了TestCase类。

使用错觉:执行的时候可能认为是@Test注解的原因支持测试用例的执行。

实际上在我本地测试的时候,这种方式都是以Junit3的方式运行,比如再定义个方法,方法名不以test开头:

public class JunitTest extends TestCase {

@Test
public void testX() {
assertEquals(0, 0);
}
@Test
public void xx() {
assertEquals(0, 0);
}
}
方法xx无法作为测试用例执行的,即使使用了注解@Test,但不符合Junit3的使用规范,所以@Test注解实际是不生效的。

当然,很多时候即使新手,也可能都会遵守以test作为前缀的方法命名,一般不会发现这个问题。

但是在使用Junit4的一些能力的时候,会发现结果不预期,比如使用@Before、@BeforeClass等注解不生效。注意这些是属于Junit4的。按照Junit3的方式当然会不支持(包括@Test注解的异常测试等能力)。

所以,如果出现Junit4的注解不生效的时候,可以检查是否因为继承TestCase而使用了Junit3方式测试的原因导致。

如果还想使用Junit4的能力,依然继承TestCase类的时候(可能如文中说的,可能继承它的一些断言方法)或者是其它外力原因不可更改,可以在测试类上加上注解@RunWith(JUnit4.class)显式指定使用Junit4。如下:

@RunWith(JUnit4.class)
public class JunitTest extends TestCase {

@Test
public void testX() {
assertEquals(0, 0);
}
@Test
public void xx() {
assertEquals(0, 0);
}
}
这样就可以按预期的使用Junit4的能力执行测试用例。
————————————————
版权声明:本文为CSDN博主「不识君的荒漠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/x763795151/article/details/89218868

posted on   frank_cui  阅读(494)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-02-28 Hystrix - 断路器 Circuit Breaker + 滑动窗口
2021-02-28 Hystrix - 资源隔离模式 (线程池模式+信号量模式)
2019-02-28 Leetcode - 309. Best Time to Buy and Sell Stock with Cooldown
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示