在实际开发中,写好的代码都要经过测试。一般我们都是自己写一个main方法来调用一下测试,但最近发现用junit测试框架做起来更方便。具体请看下面的代码:
public class Person { private String name; private int age; public Person() { this.name = "jack"; this.age = 20; } public Person(String name, int age) { this.name = name; this.age = age; } public void Run() { System.out.println(name + ": is running"); } public void eat() { System.out.println(name + ": is eatting"); } }
上面就是一个普通的类,这个就是我们用来作为测试对象的类。为了清楚,我们再写一个Main类,用来调用测试,如下:
import org.junit.After; import org.junit.Before; import org.junit.Test; public class Main { Person p = null; @Before public void before() { System.out.println("before...初始化"); p = new Person(); } @Test public void testRun() { p.Run(); } @Test public void testEat() { p.eat(); } @After public void after() { System.out.println("after...释放资源"); p = null; } }
在需要测试的方法前打个"@Test"标记,然后打开大纲视图在相应的方法上右键选择Run as -- Junit Test.如下图所示:
如果方法没有错误Junit框架会显示绿条,否则会显示红条。
还有一点:在上面的代码中我们用到了@before,@after。其实还有一对类似的@beforeClass,@afterClass。区别是:前一对会在每个测试方法执行前后都会执行,后者只在类加载前和类销毁前执行。执行结果对比:
@before,@after
@beforeClass,@afterClass
有一点需要注意用@beforeClass,@afterClass时,需要上面的代码要作一些调整,具体如下:
import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class Main { static Person p = null; @BeforeClass public static void before() { System.out.println("before...初始化"); p = new Person(); } @Test public void testRun() { p.Run(); } @Test public void testEat() { p.eat(); } @AfterClass public static void after() { System.out.println("after...释放资源"); p = null; } }