JUnit软件测试技术(工具)
注:本篇博客主要讲JUnit的使用方法
在项目中建立专门用户测试的包结构。
在Junit中,通过@Test注解,可以单独运行一个方法,即在一个方法上面一行加一句@Test。
★ Junit注解说明
使用了@Test注解应该满足以下条件:
1)、必须是无参数的非静态方法。
2)、添加@Test注解的类,必须拥有一个无参数的公开构造方法
★ JUnit测试示例演示
1、运行完成后,可以在Junit的窗口上看到运行所用的时间和结果信息。
2、被测试程序的运行结果出现在控制台(Console)上。
★ JUnit中的其它注解
@BeforeClass(在整个类之前运行一次,要用static 修饰符)
@AfterClass(在整个类之后运行一次,要用static 修饰符)
@Before(在每个测试方法前运行一次)
@After(在每个测试方法后运行一次)
通常我们在做软件的时候往往需要进行测试,传统的方法是在需要测试的类中写一个main方法进行测试,但这种方法有着缺点,因为软件发布出去时需要将main方法删去,若软件出bug客户将软件退回来维护,那测试起来就很麻烦,于是采用JUnit另外新建测试包,并且原则上要和软件的分层模式一样建包进行测试。
简单举例(下面的例子为了便利就没有按照软件分层的方式对测试类进行分类了):
1、软件项:
接口:
package cn.hncu.user.DAO;
public interface UserDAO {
public void fun1() throws Exception;
public void fun2();
public void fun3();
}
实现类:
package cn.hncu.user.impl;
import cn.hncu.user.DAO.UserDAO;
public class UserDAOImpl implements UserDAO {
@Override
public void fun1() throws Exception{
System.out.println("fun1......");
}
@Override
public void fun2() {
System.out.println("fun2......");
}
@Override
public void fun3() {
System.out.println("fun3......");
}
}
2、测试项(测实现类):
注:运行方式为:将光标放到加了@Test的方法名再右击方法名,选择Run As,再选择JUnit Test即可单独运行一个测试方法;若要同时对所有的测试方法进行测试,则可将光标放到@Test标记处再按照同样的方法操作
package cn.hncu.test;
import org.junit.Test;
import cn.hncu.user.impl.UserDAOImpl;
public class TestUserDAOImpl {
@Test
public void testFun1(){
try {
new UserDAOImpl().fun1();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testFun2(){
new UserDAOImpl().fun2();
}
@Test
public void testFun3(){
new UserDAOImpl().fun3();
}
}
所有测试方法同时运行的结果为:
JUnit界面为:
package cn.hncu.test;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import cn.hncu.user.DAO.UserDAO;
import cn.hncu.user.impl.UserDAOImpl;
public class TestUserDAOImpl2 {
private UserDAO obj=null;
@BeforeClass//在整个类之前运行一次,要用static 修饰符
public static void before(){
System.out.println("beforeClass......");
}
@AfterClass//在整个类之后运行一次,要用static 修饰符
public static void after(){
System.out.println("afterClass......");
}
@Before
public void init(){
obj=new UserDAOImpl();
System.out.println("init......");
}
@Test
public void testFun1(){
try {
new UserDAOImpl().fun1();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testFun2(){
new UserDAOImpl().fun2();
}
@Test
public void testFun3(){
new UserDAOImpl().fun3();
}
@After
public void finish(){
obj=null;
System.out.println("finish......");
}
}
全部同时运行结果:
JUnit界面为: