
步骤
1、定义一个测试类
2、定义测试方法:可以独立运行
3、给方法加注解@Test
计算类
public class Calculator(){
public int add(int a,int b){
return a+b;
}
public int sub(int a,int b){
return a-b;
}
}
测试类:com.mytest.test
import org.junit.Test;
public class CalculatorTest(){
@Test
public void testAdd(){
Calculator c = new Calculator();
int result = c.add(1,2);
//程序有没有异常可测,但是程序逻辑检测不出来。所以采用断言这个工具来
//System.out.println(result);
//断言,这个结果是3
Assert.assertEquals(3,result);//(期望的结果,运行的结果)
}
}
测试时的重复操作
初始化方法:用于资源申请,所有测试方法在执行之前都会执行该方法
@Before
public void init(){
System.out.println("初始化公共资源等");
}
释放资源方法:在所有测试方法执行后,都会自动执行该方法
@After
public void close(){
System.out.println("释放资源")
}
原始Junit测试Spring的问题
在测试类中,每个测试方法中都需要创建spring容器,获取容器中的对象,都有以下两行代码:
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
IAccountService as = ac.getBean("accountService",IAccountService.class);
这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常。所以又不能轻易删掉。
•让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它
•将需要进行测试Bean直接在测试类中进行注入(将需要
步骤①导入spring集成Junit的坐标
org.springframework spring-test 5.0.2.RELEASE junit junit 4.12 test
②使用@Runwith注解替换原来的运行期
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringJunitTest {
}
③使用@ContextConfiguration指定配置文件或配置类
@RunWith(SpringJUnit4ClassRunner.class)
//加载spring核心配置文件
//@ContextConfiguration(value = {"classpath:applicationContext.xml"})
//加载spring核心配置类
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {
}
④使用@Autowired注入需要测试的对象
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {
@Autowired
private UserService userService;
}
⑤创建测试方法进行测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {
@Autowired
private UserService userService;
@Test
public void testUserService(){
userService.save();
}
}