JUnit—Java单元测试的基本概念与规范


JUnit是XUnit中的一种,XUnit包括PythonUnit、CPPUnit以及JUnit。XUnit是测试驱动开发的一套框架。
JUnit是Java单元测试,它的地址是 junit官网,可以从官网了解与下载。

一、第一个test方法:

  1. 测试方法必须使用@Test进行修饰。
  2. 测试方法必须使用public void进行修饰,不能带任何的参数。
  3. 新建一个源代码目录来存放我们的测试代码。
  4. 测试类的包应该和被测试类保持一致。
  5. 测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖。
  6. 测试类使用Test作为类名的后缀(非必须)。

二、failure和error的区别:

  1. failure一般由单元测试使用的断言方法判断失败所引起的,这表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。
  2. error是由代码异常引起的,他可以产生于测试代码本身的错误,也可是被测试代码中的一个隐藏的bug。
  3. 测试用来不是证明你是对的,而是用来证明你没有错。

三、各种注解:

  1. @BeforeClass修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行他,而且在内存中他只会存在一份实例,他比较适合加载配置文件。
  2. @AfterClass修饰的方法通常用来对资源的清理,如关闭数据库的链接。
  3. @Before和@After会在每个测试方法的前后各执行一次。
  4. @Test(expected=ArithmeticException.class):预期会出算术异常,发生了,符合预期,否则,不符合预期。
  5. @Test(timeout = 2000):指定执行的时间,单位为毫秒。如果超过这个时间了,就被认为是error。
  6. @Ignore:所修饰的测试方法会被测试运行期忽略。
  7. 断言的注解。assertEquals相等就通过,assertNotEquals不相等就通过。

四、测试套件:

  1. 测试套件就是组织测试类一起运行的。
  2. 写一个作为测试套件的入口类,这个类里不包含其他的方法。
  3. 更改测试运行器:@RunWith(Suite.class)。
  4. 将要测试的类作为数组传入到Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class})。
@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class})
public class SuiteTest {

	

}

五、参数化设置:

  1. 更改默认的测试运行器为:@RunWith(Parameterized.class)
  2. 声明变量来存放预期值和结果值:int expected = 0; int input1 = 0; int input2 = 0;
  3. 声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰。
  4. 为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值。
@RunWith(Parameterized.class)
public class ParameterTest {

	int expected = 0;
	int input1 = 0;
	int input2 = 0;
	
	@Parameters
	public static Collection<Object[]> t() {
		return Arrays.asList(new Object[][]{
				{3,1,2},
				{5,2,3}
		});
	}
	
	public ParameterTest(int expected, int input1, int input2) {
		this.expected = expected;
		this.input1 = input1;
		this.input2 = input2;
	}
	
	@Test
	public void testAdd() {
		assertEquals(expected, new Calculate().add(input1,input2));
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值