01-A Simple Unit Test

在本文中,我将向您展示使用JUnit 4.8.1实现的简单单元测试。

下面是要测试的类的代码:

1
2
3
4
5
6
    public class MyUnit {

public String concatenate(String one, String two){
return one + two;
}
}

我会保持这个类使其简单,让我们更容易理解发生了什么。

单元测试

要测试这个类,我需要一个单元测试来测试每个公共方法。该类只有一个公共方法,concatenate(),所以我需要测试的是这种方法。

单元测试被实现为具有测试方法的类。每个测试方法通常测试目标类的单一方法。有时,测试方法可以测试目标类中的多个方法,有时,如果要测试的方法很大,则将测试拆分为多个测试方法。这是JUnit单元测试,测试concatenate()方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import org.junit.Test;
import static org.junit.Assert.*;

public class MyUnitTest {

@Test
public void testConcatenate() {
MyUnit myUnit = new MyUnit();

String result = myUnit.concatenate("one", "two");

assertEquals("onetwo", result);

}
}

单元测试类是一个普通类,有一个方法testConcatenate()。注意这个方法如何用JUnit注释@Test进行注释。这是为了向单元测试运行者发信号,这个方法代表d单元测试,应该执行。没有使用@Test注释的方法不会被测试运行器执行。在testConcatenate()方法的内部创建一个MyUnit的实例。 它将使用两个字符串值 作为参数调用oncatenate()方法。

最后,assertEquals()方法被调用,这种方法是做实际测试的。在这种方法中,我们将被调用的方法(concatenate())的输出与预期输出进行比较。换句话说,我们将“onetwo”(预期输出)与concatenate()方法返回的值进行比较,该值保存在变量result中。

如果两个值相等,则不会发生任何反应。assertEquals()方法返回正常。如果两个值不相等,则会抛出异常,并在此处停止执行测试方法。

assertEquals()方法是静态导入的方法,通常位于org.junit.Assert类中。注意这个类导入的地方在MyUnitTest顶部。使用方法的静态导入比写Assert.assertEquals()要短。

您可以根据需要在单元测试类中拥有尽可能多的测试方法。 测试执行器会发下他们,并执行他们。 在这个例子中,我只写了一个测试方法。

这是使用Junit4.8.2进行单元测试的简单例子。