Unitils介绍(二)-- Assertion utilities

单体测试应该简单而直观。。。至少在理论上是这样。接上来我们详细介绍一下断言功能

通过反射和断言

先写一个普通类User.java

  1. package tiger;
  2. public class User {
  3.     private long id;
  4.     private String first;
  5.     private String last;
  6.     public User(long id, String first, String last) {
  7.         this.id = id;
  8.         this.first = first;
  9.         this.last = last;
  10.     }
  11. }

一个典型的测试方法

  1. public class TestUser {
  2.     public void testUser(){
  3.     User user1 = new User(1"John""Doe");
  4.     User user2 = new User(1"John""Doe");
  5.     assertEquals(user1, user2); //failed
  6.     }
  7. }

你本来期望这个断言是正确的,很可惜,失败了。因为assertEquals实现上是通过 user1 == user2来比较的。结果失败。

Unitils 提供一这种断言,使用 ReflectionAssert.assertRefEquals ,测试代码如下;

  1. package tiger;
  2. import org.junit.Test;
  3. import org.unitils.UnitilsJUnit4;
  4. import static
  5. org.unitils.reflectionassert.ReflectionAssert.assertRefEquals;  
  6. public class UserTest extends UnitilsJUnit4{
  7.   @Test
  8.   public void testUser()
  9.   {
  10.       User user1 = new User(1"John""Doe");
  11.       User user2 = new User(1"John""Doe");
  12.       assertRefEquals(user1, user2); //success
  13.   }
  14. }

当然了,在我们运行上面这个测试之前,我们得小小配置一下,下载testng库还有一些依赖库。 建立一个普通的Java工程,导入User.javaUserTest.java文件,再引入 unitilsjunit库。这时候你发现运行不了, 出现一个NoClassDefFoundError异常。如图:


管不了那么多,估计是缺少库,于是把所有依赖库全部引入,果然这个问题解决了,不过又有了新的问题,出现UnitilsException,配置文件有问题。



下面会讲到,这里我们就直接写了 ,建立

unitils.properties 文件,放到src文件夹下。

  1. unitils.module.database.className=org.unitils.database.DatabaseModule
  2. unitils.module.database.runAfter=
  3. unitils.module.database.enabled=false
  4. unitils.module.hibernate.className=org.unitils.orm.hibernate.HibernateModule
  5. unitils.module.hibernate.runAfter=
  6. unitils.module.hibernate.enabled=false
  7. unitils.module.dbunit.className=org.unitils.dbunit.DbUnitModule
  8. unitils.module.dbunit.runAfter=
  9. unitils.module.dbunit.enabled=false
  10. unitils.module.easymock.className=org.unitils.easymock.EasyMockModule
  11. unitils.module.easymock.runAfter=
  12. unitils.module.easymock.enabled=false
  13. unitils.module.inject.className=org.unitils.inject.InjectModule
  14. unitils.module.inject.runAfter=
  15. unitils.module.inject.enabled=false
  16. unitils.module.spring.className=org.unitils.spring.SpringModule
  17. unitils.module.spring.runAfter=database
  18. unitils.module.spring.enabled=false
  19. unitils.module.jpa.className=org.unitils.orm.jpa.JpaModule
  20. unitils.module.jpa.runAfter=
  21. unitils.module.jpa.enabled=false

 这时候再运行,一切OK



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值