JUnit:是否应在 setUp() 中初始化测试实例变量中的 class?

JUnit : Should the class under tests' instance variables be initialised in setUp()?

我是 JUnit 的新手,这似乎有些明显,但我似乎无法找到一个直接的答案。我有一个 class,因为缺少更好的短语是 "Cargo" class,因为它的存在只是为了保存不同类型的变量以供其他对象使用(具体来说,这个 class 用于包含样式和格式 table 单元格的参数。

它主要由 getter 和 setter 组成,虽然我知道有些人会说我可能不值得花时间测试这个 class,但在进入更复杂的 [=18] 之前,我正在使用它进行练习=]es.

class本身包含一个无参构造函数以及一个需要传入对象的所有实例变量的构造函数。创建测试时,我应该使用(还是认为它是最佳实践在 setUp() 方法中使用)丰富的构造函数,还是应该调用无参数构造函数,然后对 getter 和 setter 进行测试?

如果 setter/getter 中的那个成员什么也没做,那么它就毫无意义,但我想您可以将其视为练习。

您可以对两者进行测试。如果您有 5 个成员,我将进行 6 个测试:5 个使用无参数构造函数的测试,每个测试使用一个 setter 和 getter。另一个测试将具有 args 构造函数并对每个 getter.

执行断言

有一个关于单个测试中应该有多少个断言的讨论,虽然通常我会尽量减少它们,但我相信每个 getter 上有 5 个断言的单个测试是合适的,因为你是从在一个语句中说 "insert all these values" 的情况开始。

有些人会争辩说这应该分成 10 个测试:5 个带有无参数构造函数 + get/setter 和 5 个带有一个带有单个 getter 的 arg 构造函数,因为那允许您将测试分开,以明确您正在测试的 getter。

对此没有严格的指导方针,因此您应该自己决定。