在本节中,我们将展示使用JUnit的一个完整的例子。我们将详细了解如何创建和运行测试,我们将展示如何使用特定的注释和JUnit断言。
1. 初始步骤
让我们创建一个名为 JUnitGuide 的Java项目. 在 src 文件夹, 我们用鼠标右键单击并选择 New -> Package, 创造一个新的包名为: com.yiibai.junit 这里我们将定位类用于测试。 对于测试类,一个很好的做法就是创建专用于测试的一个新的源文件夹,这样的类用于测试以及测试类将在不同的源的文件夹。 为此,右键单击您的项目,选择 New -> Source Folder, 命名新的源文件夹test 并点击 Finish.
提示:
或者,可以通过右键点击项目创建一个新的源文件夹,选择Properties -> Java Build Path, 选择标签 Source, 选择 Add Folder -> Create New Folder, 写上名称为test,然后按 Finish。
可以很容易地看到,在项目中有两个源文件夹:
还可以创建一个新的包在新创建的测试文件夹,名称为 com.javacodegeeks.junit, 测试类不会在默认包中,我们已经准备好了,现在就开始吧!
2. 创建Java类用于测试
右键单击src文件夹并创建一个新的Java类称为 FirstDayAtSchool.java. 这个类的公共方法将被测试。
FirstDayAtSchool.java
package com.yiibai.junit;
import java.util.Arrays;
public class FirstDayAtSchool {
public String[] prepareMyBag() {
String[] schoolbag = { "Books", "Notebooks", "Pens" };
System.out.println("My school bag contains: "
+ Arrays.toString(schoolbag));
return schoolbag;
}
public String[] addPencils() {
String[] schoolbag = { "Books", "Notebooks", "Pens", "Pencils" };
System.out.println("Now my school bag contains: "
+ Arrays.toString(schoolbag));
return schoolbag;
}
}
3. 创建和运行JUnit测试案例
要为现有类 FirstDayAtSchool.java 创建一个JUnit测试案例, 在Package Explorer视图上右键单击并选择 New → JUnit Test Case. 更改源文件夹,这样的类将位于 test 源文件夹并确保该标志 New JUnit4 测试选择。
然后点击 Finish. 如果您的项目不包含JUnit库在classpath中,下面的消息会显示成为将JUnit库添加到类路径:
下面,有一个名为:FirstDayAtSchoolTest.java 类,这个测试类的代码如下所示:
FirstDayAtSchool.java
package com.yiibai.junit;
import static org.junit.Assert.*;
import org.junit.Test;
public class FirstDayAtSchoolTest {
FirstDayAtSchool school = new FirstDayAtSchool();
String[] bag1 = { "Books", "Notebooks", "Pens" };
String[] bag2 = { "Books", "Notebooks", "Pens", "Pencils" };
@Test
public void testPrepareMyBag() {
System.out.println("Inside testPrepareMyBag()");
assertArrayEquals(bag1, school.prepareMyBag());
}
@Test
public void testAddPencils() {
System.out.println("Inside testAddPencils()");
assertArrayEquals(bag2, school.addPencils());
}
}
现在,我们可以通过右击运行测试测试类用例,选择 Run As -> JUnit Test.
程序将输出类似如下所示:
Inside testPrepareMyBag()
My school bag contains: [Books, Notebooks, Pens]
Inside testAddPencils()
Now my school bag contains: [Books, Notebooks, Pens, Pencils]
在JUnit视图将没有失败或错误。如果改变其中一个数组,以便它包含超过预期的元素:
String[] bag2 = { "Books", "Notebooks", "Pens", "Pencils", "Rulers"};
我们再次运行测试类,JUnit视图将包含一个错误:
否则,如果我们再次更改其中一个数组,让它包含一个不同的元素:
String[] bag1 = { "Books", "Notebooks", "Rulers" };
我们再次运行测试类,JUnit视图将再一次失败: