bean比较的单元测试框架

时间:2010-05-21 12:19:42

标签: java unit-testing junit

有没有比较整个对象的好框架?

现在我做了

assertEquals("ha@gmail.com", obj.email);
assertEquals("5", obj.shop);

如果收到错误的电子邮件,我永远不会知道它是否有正确的商店,我想得到一个不正确的字段列表。

5 个答案:

答案 0 :(得分:1)

使用1测试,1断言如果你在自己的测试中有每个断言,你会知道其中一个或两个因为有1或2个失败的测试而失败。

@Test
public void TestEmail()
{
    obj = GetTestObject();
    assertEquals("ha@gmail.com", obj.email);
}

@Test
public void TestShop()
{
    obj = GetTestObject();
    assertEquals("5", obj.shop);
}

显然你需要将对象的设置移动到一个方法中,让它在测试设置方法中执行并让它成为一个类变量。

如果您确实想测试是否在单个测试中设置了所有属性:

@Test
public void TestAllProperties()
{
    obj = GetTestObject(); 
    bool testResult=true;
    string failureString;
    if "ha@gmail.com".equals( obj.email) == false
    {
         testResult=false;
         failureString+="email was different";
    }
    if "5".equals( obj.shop) == false
    {
         testResult=false;
         failureString+="shop was different";
    }
    assertTrue(testResult,failurestring);
}

但我不确定这给你带来了什么。

但是如果你真的想要比较整个对象的相等性,那么重写equals方法(也不要忘记getHashCode)并在那里进行相等性检查。毕竟这就是它......

如果你想要一个不正确字段的列表,你可以使equals方法填充一个内部列表,如果相等检查失败,你可以查询该内部列表,以获得上次检查相等性时失败字段的列表。不过,不要认为这是一个好主意。

答案 1 :(得分:1)

答案 2 :(得分:1)

答案 3 :(得分:1)

我会选择hamcrest matchers。他们允许我编写这样的代码:

assertThat(obj, hasProperty("email", equalTo("ha@gmail.com")));

答案 4 :(得分:0)

如果你想测试对象的相等性,那么你肯定需要使用assertEquals()来实现equals()和测试,否则Sam是正确的,每个测试一个断言