gpt4 book ai didi

java - 在单元测试中比较对象的正确方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:45 26 4
gpt4 key购买 nike

我正在为我的 grails 应用程序编写单元测试,我意识到我并不知道断言一个对象是否是正确对象的正确方法。

例如,给出这个测试:

void testExampleTest() {
mockSession.person = new Person(firstName:'John', lastName:'Doe', middleInitial:'E')
def model = controller.testMethod()
...assertions...
}

def testMethod = {
Person currPerson = session.getAttribute("person")
render(view:'view',model:[person:currPerson]
}

我应该如何确保我添加到 session 中的人员对象在模型中正确传递?够不够用

assertEquals( person,model['person'] )

或者因为我自己将对象注入(inject)到 session 中,使用它是否更有意义

assertEquals( person.firstName, model['person'].firstName )
assertEquals( person.lastName, model['person'].lastName )
assertequals( person.middleName, model['person'].middleName )

在我看来,只要对象具有正确定义的 equals 方法,第一种方法就足够了,但我只是想看看常规方法是什么。

谢谢

最佳答案

每次测试都需要重复逐个属性比较 - 所以这是一个很好的旧代码重复,a test smell described in XUnitPatterns .最好有一个适当的 equals()

当然,您可以添加实用方法personEquals(),甚至可以在运行时覆盖Person.equals()。对于模拟类(class),您可能必须这样做。我个人坚持使用更短的代码,尽可能使用一个 assertEquals()

关于java - 在单元测试中比较对象的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684777/

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