gpt4 book ai didi

java - 用于 bean 比较的单元测试框架

转载 作者:行者123 更新时间:2023-12-01 19:23:12 24 4
gpt4 key购买 nike

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

现在我做到了

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

如果返回错误的电子邮件,我永远不知道它是否有正确的商店,我想获得不正确字段的列表。

最佳答案

按照 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 方法填充一个内部列表,如果相等性检查失败,您可以查询该列表,以获取上次检查相等性时失败的字段列表。不过,我真的不认为这是一个好主意。

关于java - 用于 bean 比较的单元测试框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2881938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com