ssm框架单元测试

数据层的测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:spring/spring-mybatis.xml" })
public class UserDaoTest {

	// 注入Dao实现类依赖
	@Resource
	private UserDao userDao;
	@Test
	public void testUserDao() {
		User user = userDao.findById(1);
         System.out.println(user);
	}
}

业务层测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:spring/spring-mybatis.xml", "classpath:spring/spring-service.xml" })
/*
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
*/
//上面的已经过时了
@Transactional(transactionManager = "transactionManager")
@Rollback(value = false)
public class UserServiceTest {

	@Autowired
	private UserService userService;
	@Test
	public void test() {
		User user = new User();
        user.setName("东西");
		userService.save(user)
	}
}

控制层测试

控制层主要模拟用户请求,这里涉及到http请求,我们可以使用mock测试

需要引入servlet依赖,不然会报

Caused by: java.util.MissingResourceException: Can’t find bundle for base name javax.servlet.LocalStrings, locale zh_CN

junit版本要在4.12以上


    javax.servlet
    javax.servlet-api
    3.1.0
    provided

@WebAppConfiguration
//告诉junit spring的配置文件
@ContextConfiguration({ "classpath:spring-mybatis.xml",
        "classpath:spring-mvc.xml"})
//配置spring和junit整合,这样junit在启动时就会加载spring容器
@RunWith(SpringJUnit4ClassRunner.class)
//事务
@Transactional(transactionManager = "transactionManager")
@Rollback(value = false)
public class UserControllerTest {
    private MockMvc mockMvc;
    @Autowired
    private WebApplicationContext wac;//
    @Autowired
    private UserController userController;//注入要测试的Controller
    @Before
    public void setup() {
        //mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();  //初始化MockMvc对象
        mockMvc = MockMvcBuilders.standaloneSetup(userController).build();//两种方式都可以初始化mockMvc,推荐用这种,上面的会自动跳转地址status判断方法无效
    }//这个方法在每个方法执行之前都会执行一遍

    @Test
    public void userControllerTest() throws Exception {
        String result = mockMvc.perform(
                MockMvcRequestBuilders.post("http://127.0.0.1:8888/user/checkUserName")//请求的url,请求的方法是post
                .param("username","1377262954"))
                .andExpect(status().isOk())//返回的状态是200
                .andDo(print())//打印出请求和相应的内容
                .andReturn().getResponse().getContentAsString();//将相应的数据转换为字符串
       
        System.out.println(result);
    }
}

参考链接:

https://blog.csdn.net/weixin_33853827/article/details/91849322

https://www.cnblogs.com/williamjie/p/9145165.html#top

————————————————
版权声明:本文为CSDN博主「314程序员」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41116058/article/details/82856606

你可能感兴趣的:(【junit】)