JUnit3与JUnit4差别
- Junit3:
- 測试用例必须是公共类。
- 測试用例必须继承类
TestCase
; - 測试用例的測试方法必须是公有的;
- 測试用例的測试方法必须被声明为void。
- 測试用例的測试方法的前置名词必须是test;
- 測试用例的測试方法无不论什么參数传递;
- Junit4:
- 測试类不须要继承
TestCase
; - 測试方法命名没有特定要求,仅仅要在待測方法前加上
@Test
就可以; - 通过
@before
替代setUp
方法,@After
替代tearDown
方法;
在一个測试类中,甚至能够使用多个@Before
来凝视多个方法,这些方法都是在每一个測试之前执行。说明一点。@Before
是在每一个測试方法执行前均初始化一次,同理@After
是在每一个測试方法执行完成后均执行一次,也就是说。经过这两个凝视的初始化和注销,能够保证各个測试方法之间的独立性而互不干扰,它的缺点是效率低。
在JUnit4中增加了一项新特性。增加了两个凝视:
@BeforeClass
和@AfterClass
,使用这两个凝视的方法。在该測试类中方法的測试之前、后各执行一次。而不是依照各个方法各执行一次。对于一些资源消耗大的项目,能够使用这两个凝视。 - 此外Junit4还能够进行异常測试(
@Test(expected=*.class)
)和超时測试(@Test(timeout=xxx)
)。而且提供了一个新的assert方法:assertEquals(Object[] expected, Object[] actual)
,用于比較数组数据。
- 測试类不须要继承
JUnit3的使用
1 測试目标
package club.chuxing.junit3;
public class Calculator {
public double add(double a, double b) {
return a + b;
}
public double minus(double a, double b) {
return a - b;
}
public double multiply(double a, double b) {
return a * b;
}
public double divide(double a, double b) {
return a / b;
}
}
2 測试用例
TestCalculator.java:
package club.chuxing.junit3;
import junit.framework.TestCase;
public class TestCalculator extends TestCase{
private Calculator calc;
protected void setUp() throws Exception {
super.setUp();
calc = new Calculator();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testAdd() {
assertEquals(3.0, calc.add(1, 2));
}
public void testMinus() {
assertEquals(-1.0, calc.minus(1, 2));
}
public void testMultiply() {
assertEquals(2.0, calc.multiply(1, 2));
}
public void testDivide() {
assertEquals(0.5, calc.divide(1, 2));
}
}
TestCalculator2.java:
package club.chuxing.junit3;
import junit.framework.TestCase;
public class TestCalculator2 extends TestCase{
private Calculator calc;
protected void setUp() throws Exception {
super.setUp();
calc = new Calculator();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testAdd() {
assertEquals(4.0, calc.add(2, 2));
}
public void testMinus() {
assertEquals(0.0, calc.minus(2, 2));
}
public void testMultiply() {
assertEquals(4.0, calc.multiply(2, 2));
}
public void testDivide() {
assertEquals(1.0, calc.divide(2, 2));
}
}
3 測试单元
package club.chuxing.junit3;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
public class TestAll extends TestSuite {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(TestCalculator.class);
suite.addTestSuite(TestCalculator2.class);
return suite;
}
public static void main(String[] args) {
TestRunner.run(suite());
}
}
执行结果:
........
Time: 0.009
OK (8 tests)
JUnit4的使用
CalculatorTest.java
package club.chuxing.junit4;
import static org.junit.Assert.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class CalculatorTest {
private static Calculator calc;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
calc = new Calculator();
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
public void testAdd() {
assertEquals(3, calc.add(1, 2), 0.00001);
}
@Test
public void testMinus() {
assertEquals(-1, calc.minus(1, 2), 0.00001);
}
@Test
public void testMultiply() {
assertEquals(2, calc.multiply(1, 2), 0.00001);
}
@Test
public void testDivide() {
assertEquals(0.5, calc.divide(1, 2), 0.00001);
}
}
执行结果: