一个简单的单元测试
在本文中,我将向我们展示一个使用JUnit 4.8.1实现的简单单元测试。
首先,我将向我们展示我要测试的课程:
public class MyUnit { public String concatenate(String one, String two){ return one + two; } }
我使课程非常简单,以使其易于理解正在发生的事情。
单元测试
为了测试该类,我需要一个单元测试来测试其每个公共方法。该类只有一个公共方法,即concatenate(),因此我需要测试的就是这种方法。
单元测试通过测试方法作为类来实现。每个测试方法通常测试目标类的单个方法。有时,一个测试方法可以测试目标类中的多个方法,有时,如果要测试的方法很大,则将测试拆分为多个测试方法。
这是测试concatenate()
方法的JUnit单元测试:
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
批注此方法。这样做是为了向单元测试运行程序发出信号,该方法表示应该执行的单元测试。测试运行器不会执行未使用@Test注释的方法。
在testConcatenate()方法内部,创建了MyUnit的实例。然后用两个字符串值调用concatenate()
方法。
最后,调用" assertEquals()"方法。正是这种方法进行了实际测试。在此方法中,我们将调用方法(concatenate()
)的输出与预期输出进行比较。换句话说,我们将" onetwo"(预期的输出)与" concatenate()"方法返回的值进行比较,该值保存在变量"结果"中。
如果两个值相等,则什么也不会发生。 AssertEquals()方法正常返回。如果两个值不相等,则会引发异常,并且test方法在此处停止执行。
AssertEquals()方法是静态导入的方法,通常位于org.junit.Assert类中。注意,在" MyUnitTest"的顶部,该类的静态导入。使用静态导入方法比编写Assert.assertEquals()
要短。
我们可以根据需要在单元测试类中使用任意数量的测试方法。测试运行者将找到所有这些,并执行它们中的每一个。在此示例中,我只用一种测试方法就足够了,以保持清楚。
而已。这就是使用JUnit 4.8.2进行单元测试的简单程度。