JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量。JUnit 测试框架能够轻松完成以下任意两种结合:
JUnit 测试框架具有以下重要特性:
测试工具是一整套固定的工具用于基线测试。测试工具的目的是为了确保测试能够在共享且固定的环境中运行,因此保证测试结果的可重复性。它包括:
让我们来看一个例子:
import junit.framework.*; |
public class JavaTest extends TestCase { |
protected int value1, value2; |
// assigning the values |
protected void setUp(){ |
value1=3; |
value2=3; |
} |
// test method to add two values |
public void testAdd(){ |
double result= value1 + value2; |
assertTrue(result == 6); |
} |
} |
测试套件意味捆绑几个测试案例并且同时运行。在 JUnit 中,@RunWith 和 @Suite 都被用作运行测试套件。以下为使用 TestJunit1 和 TestJunit2 的测试分类:
import org.junit.runner.RunWith; |
import org.junit.runners.Suite; |
//JUnit Suite Test |
@RunWith(Suite.class) |
@Suite.SuiteClasses({ |
TestJunit1.class ,TestJunit2.class |
}) |
public class JunitTestSuite { |
} |
import org.junit.Test; |
import org.junit.Ignore; |
import static org.junit.Assert.assertEquals; |
public class TestJunit1 { |
String message = "Robert"; |
MessageUtil messageUtil = new MessageUtil(message); |
@Test |
public void testPrintMessage() { |
System.out.println("Inside testPrintMessage()"); |
assertEquals(message, messageUtil.printMessage()); |
} |
} |
import org.junit.Test; |
import org.junit.Ignore; |
import static org.junit.Assert.assertEquals; |
public class TestJunit2 { |
String message = "Robert"; |
MessageUtil messageUtil = new MessageUtil(message); |
@Test |
public void testSalutationMessage() { |
System.out.println("Inside testSalutationMessage()"); |
message = "Hi!" + "Robert"; |
assertEquals(message,messageUtil.salutationMessage()); |
} |
} |
测试运行器 用于执行测试案例。以下为假定测试分类成立的情况下的例子:
import org.junit.runner.JUnitCore; |
import org.junit.runner.Result; |
import org.junit.runner.notification.Failure; |
public class TestRunner { |
public static void main(String[] args) { |
Result result = JUnitCore.runClasses(TestJunit.class); |
for (Failure failure : result.getFailures()) { |
System.out.println(failure.toString()); |
} |
System.out.println(result.wasSuccessful()); |
} |
} |
测试分类是在编写和测试 JUnit 的重要分类。几种重要的分类如下: