在本节中,我们将看到一个简单的JUnit例子。
先创建一个工程,名称为:CalculateTest,并在这个工程上点击右键,选择:Build Path -> Add Library -> JUnit ...,如下图所示:
选择 JUnit 的库版本为:JUnit 4,如下图所示:
整个工程的结构如下:
首先,我们将介绍一个测试类:
Calculate.java
package com.yiibai.junit; public class Calculate { public int sum(int var1, int var2) { System.out.println("相加的值是: " + var1 + " + " + var2); return var1 + var2; } }
在上面的代码中,我们可以看到,类有一个公共的方法sum(), 它得到输入两个整数,将它们相加并返回结果。在这里,我们将测试这个方法。为了这个目的,我们将创建另一个类包括方法,将测试之前的类(在此情况下,我们只有一个方法进行测试)中每一个的方法。这是使用的最常见的方式。当然,如果一个方法非常复杂且要扩展,我们可以在一个以上的试验方法来测试这一复杂方法。创建测试用例的详细信息将显示在下面的部分。下面,有一个类是:CalculateTest.java,它具有我们的测试类的角色的代码:
CalculateTest.java
package com.yiibai.junit; import static org.junit.Assert.*; import org.junit.Test; public class CalculateTest { Calculate calculation = new Calculate(); int sum = calculation.sum(2, 5); int testSum = 7; @Test public void testSum() { System.out.println("@Test sum(): " + sum + " = " + testSum); assertEquals(sum, testSum); } }
让我们来解释一下上面的代码。首先,我们可以看到,有一个@Test的注解在 testSum()方法的上方。 这个注释指示该公共无效(public void)方法它所附着可以作为一个测试用例。因此,testSum()方法将用于测试公开方法 sum() 。 我们还可以观察一个方法 assertEquals(sum, testsum)。 assertEquals ([String message], object expected, object actual) 方法持有两个对象作为输入,并断言这两个对象相等。
如果要运行测试类,右键点击测试类,并选择 Run As -> Junit Test, 该程序的输出将类似于如下:
相加的值是: 2 + 5 @Test sum(): 7 = 7
若要查看JUnit测试的实际结果,Eclipse IDE提供了JUnit的窗口,它显示了测试的结果。 在这种情况下测试成功,JUnit 窗口不显示任何错误或失败,因为我们可以在下面的图片中看到(Errors 0):
现在,如果我们改变这一行的代码:
int testSum = 10;
使整数待测试不相等,则输出将是:
相加的值是: 2 + 5 @Test sum(): 7 = 10
在JUnit窗口,有一个错误将出现,并且会显示这样的信息:
java.lang.AssertionError: expected: but was: at com.yiibai.junit.CalculateTest.testSum(CalculateTest.java:16)