rip*_*234 13 java unit-testing assert equality javabeans
这个问题很接近,但仍然不是我想要的.我想以通用的方式断言两个bean对象是等价的.如果它们不是,我想要一个详细的错误消息来解释差异而不是布尔"等于"或"不等于".
Cho*_*meh 16
import static org.hamcrest.beans.SamePropertyValuesAs.samePropertyValuesAs;
import static org.junit.Assert.assertThat;
@Test
public void beansAreTheSame(){
MyDomianClass bean1 = new MyDomainClass();
MyDomianClass bean2 = new MyDomainClass();
//TODO - some more test logic
assertThat(bean1, samePropertyValuesAs(bean2));
}
Run Code Online (Sandbox Code Playgroud)
gav*_*koa 13
我建议你使用unitils库:
http://www.unitils.org/tutorial-reflectionassert.html
public class User { private long id; private String first; private String last; public User(long id, String first, String last) { this.id = id; this.first = first; this.last = last; } }
User user1 = new User(1, "John", "Doe"); User user2 = new User(1, "John", "Doe"); assertReflectionEquals(user1, user2);
也可以看看:
您可以使用一般语言的ToStringBuilder
他们两个转换成可读的字符串,然后用assertEquals()
两个字符串。
如果您喜欢 XML,您可以使用java.lang.XMLEncoder将您的 bean 转换为 XML,然后比较两个 XML 文档。
就我个人而言,我更喜欢ToStringBuilder
它,因为它可以让您更好地控制格式,并允许您执行诸如对集合中的元素进行排序以避免误报之类的操作。
我建议将 bean 的每个字段放在不同的行中,以便比较它们更简单(有关详细信息,请参阅我的博客)。
归档时间: |
|
查看次数: |
16692 次 |
最近记录: |