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异常。如图:

Unitils介绍(二)-- Assertion utilities_第1张图片

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


Unitils介绍(二)-- Assertion utilities_第2张图片

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

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

Unitils介绍(二)-- Assertion utilities_第3张图片


你可能感兴趣的:(Unitils介绍(二)-- Assertion utilities)