需要测试的类Person:
package cn.edu.lstc.junit;
public class Person {
public void run() {
System.out.println("run...");
}
public void eat() {
System.out.println("eat...");
}
public String a() {
return "1";
}
}
@Test,@Before,@After
package cn.edu.lstc.junit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
//before比beforeclass更常用
public class PersonTest {
private Person p;//成员域
//以前在main里面测试,测试一个要注释一个 麻烦,
//现在你想测试那个就在那个的方法上右击测试就ok
@Before
public void before(){
System.out.println("before");
p = new Person();//测试方法之前自动执行(每執行一個方法都要執行一次,因為不是static),可以放初始化代码片段
}
@Test
public void testRun() {
p.run();
}
@Test
public void testEat() {
p.eat();
}
@After
public void after(){
System.out.println("after");
p = null;
}
}
//:out
/*
before
eat...
after
before
run...
after
*/
@Test,@beforeClass,@afterClass
package cn.edu.lstc.junit;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class Person2Test {
private static Person p;//成员域
@BeforeClass
public static void beforeClass(){//需要是static
System.out.println("beforeclass");
p = new Person();//测试方法之前自动执行(整个过程只执行一次因為是static),可以放初始化代码片段
}
@Test
public void testRun() {
// Person p = new Person();//这代码可以注释掉了因为前面定义了一个全局的p对象,在测试方法时会自动执行
p.run();
}
@Test
public void testEat(){
// Person p = new Person();//同上
p.eat();
}
@AfterClass
public static void afterClass(){
System.out.println("afterclass");
p = null;//使其不再指向對象
}
}
//out:
/*
beforeclass
eat...
run...
afterclass
*/
assertEquals,assertTrue...
package cn.edu.lstc.junit;
import org.junit.Assert;
import org.junit.Test;
public class Demo {
@Test
public void testA(){
Person p = new Person();
//斷言
// Assert.assertEquals("1",p.a());//通过测试,期望返回1,结果也返回了1
Assert.assertArrayEquals(new int[]{1,1}, new int[]{1,1});//測試通過
// Assert.assertArrayEquals(new int[]{1,1}, new int[]{1,2});//測試失敗
// Assert.assertTrue(false);//測試失敗,
Assert.assertFalse(false);//測試成功
}
}