昨天介绍了一下Junit 的简单用法,今天介绍一下断言的用法。


一、 如何生成测试类

(1) 选中要生成测试类的代码目录,也就是包。单击鼠标右键,在弹出的菜单中选择new-->Junit Test Case,如下图所示:

6cc0d67b52662f84f0ed1301130d5377.png-wh_

(2)  在添加新的Junit单元测试用例对话框中,Name处填写单元测试类的名称,一般情况下默认的命名规则是:要测试的类名+Test.java。在Class under test处选择要测试的类。如下图所示:

624da9acaf2b9fa4cf50a67e55272099.png-wh_


二、使用断言

    断言通常用来在Junit中判断测试结果是否和预期值一致,比如说下面的一段代码。如果两个参数的和是8,则测试通过,反之则测试不通过。

        @Test
	public void testAdd() {
		//fail("Not yet implemented");
		int sum = new T().add(5, 3);
		
		//判断程序运行结果是否与期望值一致
		assertEquals(8, sum);
	}

当测试结果是绿色时表示期望值与程序运行结果值一致,表示测试通过。这里可以看到有两个标志:errors和failures。error表示程序错误,failure表示断言测试没有通过,即期望值与当前测试结果不一致。如下图所示:

889e17b86262b66b921bd505def974a0.png-wh_

Junit中包含的断言方法有很多,这里不再一一赘述。这里介绍一种新的断言API,即 hamcrest.

三  hamcrest 的使用

 hamcrests是个单元测试的API,里面包含很多单元测试的方法,其中断言的写法与Junit不相同,当时功能却比Junit丰富。例如下面的代码中的assertThat()方法的写法。如果sum的值小于8,则显示字符串"assertThat"。

    @Test
	public void testAdd2() {
		//fail("Not yet implemented");
		int sum = new T().add(5, 3);
		
		//判断程序运行结果是否与期望值一致
		assertEquals(8, sum);
		//assertTrue("This is TestString",8>sum);
		assertThat("assertThat",8>sum);
	}

hamcrest 有很多断言的写法,例如:

//判断n的值是否比1大,比15小
assertThat(n, allOf( greaterThan(1), lessThan(15)));
//判断n的值是否比16大,或者是否比8小
assertThat(n, anyOf( greaterThan(16), lessThan(8)));
//判断n的值是否以“xxxx”结尾
assertThat(str, endsWith("xxxx"));

关于其它断言的具体写法这里不再讨论,感兴趣的朋友可以下载hamcrest 的API文档进行详细研究。