Java JUnit 测试 和 TDD

JUnit

什么是 JUnit ?

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

简单的说就是用来进行测试的,判断方法结果执行是否正确,是用来简化替代测试。

传统的你测试代码也许这么写

public class T {
	
	public int add(int x, int y) {
		return x + y;
	}
	
	public static void main(String[] args) {
		System.out.println(new T().add(3, 8));
	}
}

然后点击运行,查看 console 控制台输出的结果,是不是和你预期的结果一样。

当然这种方式也可以,但是他有很多弊端:写起来麻烦、不能同时测试多个方法、人工校验等。

为了解决这个问题才有了单元测试的出现,当然这些代码并不是测试人员写的,应该是开发人员需要掌握的。

JUnit 的好处

1. 可以书写一系列的测试方法,对项目所有的接口或者方法进行单元测试。 
2.启动后,自动化测试,并判断执行结果, 不需要人为的干预。 
3.只需要查看最后结果,就知道整个项目的方法接口是否通畅。。
4.每个单元测试用例相对独立,由Junit 启动,自动调用。 不需要添加额外的调用语句。
5.添加,删除,屏蔽测试方法,不影响其他的测试方法。 开源框架都对JUnit 有相应的支持。

下面我们来看个例子: 

import static org.junit.Assert.assertEquals;

import org.junit.Test;

import com.test.junit.T;

public class TTest {
	@Test
	public void test() {
		int z = new T().add(5, 3);
		assertEquals(8, z);
	}

}

相信大家都能够看懂这个例子,assertEquals 方法是用来预判目标值是不是预期的值。当你选中这个方法,在 Eclipse 中右键 Run As -> JUnit Test,然后你会看到这个结果。

发现出现一个绿色的长条表示测试通过了,就证明你写的代码都是正确的。

当你把 assertEquals 中的值改为 9 ,然后再 run,你会发现它变红了。

很显然意思就是没有通过测试,Errors(程序本身出错)是0,failures(测试失败)是1,期望是 9 ,但是是 8。

所以一直都流传了一句话

keeps the bar green ,to keeps the code clean

保持这个条绿色的,说明代码是正常的

JUnit 还提供了一些 Annotation

  1. @Test: 测试方法
    1. (expected=XXException.class)
    2. (timeout=xxx)
  2. @Ignore: 被忽略的测试方法
  3. @Before: 每一个测试方法之前运行
  4. @After: 每一个测试方法之后运行
  5. @BeforeClass: 所有测试开始之前运行
  6. @AfterClass: 所有测试结束之后运行

TDD

TDD 是测试驱动开发(Test-Driven Development),它同样也是敏捷开发的一种方法论。TDD 是再开发代码之前,先编写单元测试用例,用测试的代码确定要编写什么样的代码。它的整个思路就是通过测试来驱动整个软件开发的进度,当然这对测试人员来说是一个更高的要求和标准。

TDD 的三大原则

  • 在编写好失败的单元测试之前,不要写任何产品代码。
  • 只要有一个单元测试失败了,就不要再写测试代码。无法通过编译也是一种失败。
  • 产品代码恰好能够让当前失败的单元测试成功通过即可,不要多写。

TDD 需要经过大量的实践,并且对参与人员的素质要求相当高,但是在这种快节奏的变化多端的巨型互联网产品中,项目更加注重商业和流程,所以只有那种比较精的团队才使用这种开发模式。

发布了39 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/cong____cong/article/details/104313320
今日推荐