Junit 基本使用

作者:範宗雲 来源:原创 发布时间:2015-04-12 归档:junit

环境 : JDK 7 Maven 3 Junit 4.11 Eclipse Luna
pom.xml
		    <properties>
		      <junit.version>4.11</junit.version>
		    </properties>
		    <dependencies>
		      <dependency>
		        <groupId>junit</groupId>
		        <artifactId>junit</artifactId>
		        <version>${junit.version}</version>
		        <scope>test</scope>
		      </dependency>
		    </dependencies>
		    
Junit4 基础注解
		    public class BasicTest {

				public BasicTest() {
					System.out.println("---> BasicTest");
				}
				
				@BeforeClass
				public static void setupBeforeClass() {
					System.out.println("---> setupBeforeClass");
				}
				
				@AfterClass
				public static void tearDownAfterClass() {
					System.out.println("---> tearDownAfterClass");
				}
				
				@Before
				public void setupBeforeMethod() {
					System.out.println("---> setupBeforeMethod");
				}
				
				@After
				public void tearDownAfterMethod() {
					System.out.println("---> tearDownAfterMethod");
				}
				
				@Test
				public void testMethod1() {
					System.out.println("---> testMethod1");
				}
				
				@Test
				public void testMethod2() {
					System.out.println("---> testMethod2");
				}
				
			}
		    
mvn clean test 执行结果 :
Running org.lychie.service.BasicTest
---> setupBeforeClass
---> BasicTest
---> setupBeforeMethod
---> testMethod1
---> tearDownAfterMethod
---> BasicTest
---> setupBeforeMethod
---> testMethod2
---> tearDownAfterMethod
---> tearDownAfterClass
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.126 sec
@BeforeClass 和 @AfterClass 注解标注的方法要求是 public static void 修饰的无参方法。
@BeforeClass 在整个单元测试过程中仅执行一次, 并且是在测试开始之前执行。
@AfterClass 在整个单元测试过程中也仅执行一次, 并且是在测试结束之后执行。
BasicTest 每个测试用例执行时都会新创建一个当前类的实例, 可以从执行结果中看到, BasicTest 的构造器被执行了 2 次。
@Test 测试用例, 由 public void 修饰的无参方法。
@Before 在 @Test 执行之前执行。
@After 在 @Test 执行之后执行。
@Test 测试用例
		    public class Calculator {
				
				public int add(int x, int y) {
					return x + y;
				}
				
				public double divide(double x, double y) {
					return x / y;
				}
				
			}
		    
		    public class CalculatorTest {
			
				private Calculator calculator;
				
				@Before
				public void setup() {
					calculator = new Calculator();
				}
				
				@Test(timeout = 10)
				public void testAdd() {
					Assert.assertEquals(3, calculator.add(1, 2));
				}
				
				@Test(expected = Throwable.class)
				public void testDivide() {
					Assert.assertEquals(0, calculator.divide(1, 0), 0);
				}
				
			}
		    
timeout :毫秒为单位, 若方法执行完成耗时超出给定的数值, 则视为失败。
expected :预测方法抛出的异常, 若方法执行过程中没有抛出给定的异常, 则视为失败。
mvn clean test 执行结果 :
Running org.lychie.service.CalculatorTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec

示例代码下载
junit-basic.zip