为了测试方便,我们需要进行单元测试,需要用到Junit。
public person{
public void sayHello()
{
System.out.println("hello world!");
}
public void eat()
{
System.out.println("eat food !");
}
}
方式一:
pulic class test{
@Test
public void testSayHello()
{
person p = new person();
p.sayHello();
}
@Test
public void testEat()
{
person p = new person();
p.eat();
}
}
方式二:
pulic class test{
person p = null;
@Before
public void before()
{
p = new person();
System.out.println("测试之前。。。");
}
@Test
public void testSayHello()
{
person p = new person();
p.sayHello();
}
@Test
public void testEat()
{
person p = new person();
p.eat();
}
@After
public void after()
{
p = null;
System.out.println("测试之后..........");
}
}
结果是:不论执行testEat()还是testSayHello()都会执行先执行before(),最后在执行after()函数。如果测试整个test类,就会显示执行了两次before(),after() 函数。
可以在before()函数中初始化一些参数,在after()中释放资源。
方式三:
pulic class test{
person p = null;
@BeforeClass
public static void before()
{
p = new person();
System.out.println("测试之前。。。");
}
@Test
public void testSayHello()
{
person p = new person();
p.sayHello();
}
@Test
public void testEat()
{
person p = new person();
p.eat();
}
@AfterClass
public static void after()
{
p = null;
System.out.println("测试之后..........");
}
}
@Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)
@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)
@Test:测试方法,在这里可以测试期望异常和超时时间
@Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
@Ignore:忽略的测试方法
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void
一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
每一个测试方法的调用顺序为:
@Before -> @Test -> @After;