Junit:返回对象的新方法的测试用例

时间:2015-08-11 12:24:28

标签: java junit tdd

我是Junit的新手。我想跟随TDD。我的任务是为新方法编写测试用例。我方法的签名是public Message getMessage(String id)

责任getMessage(String id)是将messageId作为参数和查询DB,并从resultSet填充Message对象并返回。

Message Bean有四个成员

  • messageID:int
  • message:String
  • creationDate:Date
  • author:String

我的困惑是:

  • 如何使用Dummy ID作为方法参数编写测试用例,然后验证返回的对象消息以获取某些预定义的虚拟值?

2 个答案:

答案 0 :(得分:1)

有两种方法。

  1. 如果要在此方法中测试数据访问层代码,请使用DBUnit。您需要先插入样本数据,然后使用此函数进行查询。测试完成后,删除样本数据。

    http://dbunit.sourceforge.net/

  2. 如果您只是想检查业务逻辑。然后,您可以使用powermock或easymock在getMessage方法中模拟所有方法调用。并且仅测试此方法。在这里查看powermock https://github.com/jayway/powermock

答案 1 :(得分:1)

当我有一些复杂的对象作为"期望"时,我使用Spring来构建它。

例如:

实体类:

public class Person {
    private long id;
    private String name;
    private int age;
    // getters, setters, constructors goes here
    // ! IMPORTANT ! equals and toString must be implemented properly.
}

测试方法:

public class SomeClass {
   public static Person getPerson(long id) {
      // return some real Person object from database
   }
}

写下我的预期"对象我用Spring:

<bean id="person" class="Person">
   <property name="id" value="1">
   <property name="name" value="John">
   <property name="age" value="42">
</bean>

然后在测试方法中:

Person expected = springContext.getBean("person", Person.class);
Person actual = SomeClass.getPerson(1);
assertEquals(expected, actual);

如果你还没有实现getPerson,你可以使用像Mockito这样的东西来模拟这个方法并返回dumm对象,它也可以用Spring构建。

相关问题