因此,对于我遇到的大多数单元测试实用程序,您通常可以访问某种类型的SetUp()和TearDown()函数。虽然我发现几乎每个单元测试都非常方便,但我想知道如何处理对象初始化的测试?我的意思是,在几乎所有其他测试中,你只需让SetUp()函数来处理它。但是,在我使用的大多数基本测试实用程序中,在每次测试之前调用SetUp()。我一直在想你是否只是在SetUp()函数中进行初始化测试,如果一个人应该创建自己的SetUp()等效函数,在与初始化测试无关的测试开始时显式调用,或者是否有其他的普遍接受的做法我还没有长大?
答案 0 :(得分:1)
你可能会过度思考这个问题。实现setUp()
是可选的,任何给定的测试都可以自由忽略由setUp()
创建的任何状态。因此,您可以简单地忽略一个测试对象初始化的测试方法的状态,或者创建一个单独的测试类,仅用于测试具有空setUp()
方法的初始化。
答案 1 :(得分:1)
对象的初始化由构造函数完成,因此“测试初始化”意味着“测试构造函数”。在测试正常的mutator方法时,您将执行感兴趣的方法,然后在之后对对象的状态进行断言。对于构造函数来说它是一样的。如果在setUp()
方法中创建测试装置,测试普通方法的唯一区别是测试方法本身不会调用构造函数,而是依赖于设置方法中的调用。
尽管如此,我已经放弃了让ThingTest
类测试类Thing
具有类Thing
的测试装置的风格。我改为直接在测试方法中创建类Thing
的对象,使用参数化测试来减少代码重复。我发现这避免了mystery guest代码的味道。