JUnit支持

Jun 9, 2018 10:07:08 PM

作者:wendal

简介

写测试用例都很头疼,然而对核心方法的单元测试是非常重要的.

nutz-plugins-mock 提供了 Ioc支持,Mvc环境, Servlet Mock对象

基本用法

添加依赖

  1. <dependency>
  2. <groupId>org.nutz</groupId>
  3. <artifactId>nutz-plugins-mock</artifactId>
  4. <version>1.r.60</version>
  5. <scope>test</scope>
  6. </dependency>
  7. <!-- 可选, 安利一下mockito,模拟mock对象很方便 -->
  8. <dependency>
  9. <groupId>org.mockito</groupId>
  10. <artifactId>mockito-core</artifactId>
  11. <version>2.6.3</version>
  12. <scope>test</scope>
  13. </dependency>

添加Runner. web项目建议覆盖getMainModule方法, 非web项目覆盖getIocArgs

  1. public class MyNutTestRunner extends NutTestRunner {
  2. public MyNutTestRunner(Class<?> klass) throws InitializationError {
  3. super(klass);
  4. }
  5. public Class<?> getMainModule() {
  6. return MainModule.class;
  7. }
  8. /**
  9. * 可覆盖createIoc,实现参数覆盖, bean替换,等定制.
  10. */
  11. protected Ioc createIoc() {
  12. Ioc ioc = super.createIoc();
  13. PropertiesProxy conf = ioc.get(PropertiesProxy.class, "conf");
  14. conf.put("db.url", "jdbc:h2:~/test");
  15. return ioc;
  16. }
  17. }

测试类, 请务必留意测试类所在的package,确保到ioc配置的覆盖范围内.

  1. @RunWith(MyNutTestRunner.class)
  2. @IocBean // 必须有
  3. public class SimpleTest extends Assert {
  4. //private static final Log log = Logs.get();
  5. // 跟通常的@Inject完全一样.
  6. @Inject("refer:$ioc")
  7. protected Ioc ioc;
  8. @Inject
  9. protected Dao dao;
  10. @Test
  11. public void test_user_service_create_user() {
  12. dao.create(User.class, false);
  13. User user = new User("wendal", "1234512345");
  14. dao.insert(user);
  15. user = dao.fetch(User.class, "wendal");
  16. assertNotNull(user);
  17. assertNotNull(user.getName());
  18. }
  19. }

本页面的文字允许在知识共享 署名-相同方式共享 3.0协议GNU自由文档许可证下修改和再使用。

原文: http://nutzam.com/core/testing/junit_testing.html