2009-02-06 59 views
1

我的测试夹具通常具有“设置”成员函数,因为它们的参数将根据将要运行的测试进行更改,因此在构建夹具期间无法调用它们。它们是为避免代码重复而编写的。向测试夹具添加成员函数是否表示测试不良?

这些函数是否会创建无效测试,因为它们依赖于复杂的非生产方式进行设置? 他们的存在是否表明我的班级设计不佳,难以构建? 这些方法是否应该由我正在测试自己的课程提供给我的测试?

回答

1

这可能意味着您需要使用不同参数对构造进行参数化以测试不同的排列,在这种情况下,我认为它是100%合法的。 DRY在测试中的应用与代码中的一样。

不同的测试施工场景可能表示您的班级没有遵循单一责任原则。你可以用可以有有几种不同的构造方法,因为你需要在几种不同的状态下构建类。显着不同的构造可能意味着测试对象的混合责任。

0

每个测试都应该测试某种功能的某种功能。因此,如果设置不是生产标准,只要测试的目的是生产使用即可。

所以,如果你正在创建一个Add(int a,int b)测试,那么int a和int b的生成方式并不重要,只要你在生产环境中完成它就可以了添加给出正确的回应。

你还应该为你的“int a”和“int b”的生成创建一个测试,以便你知道它们何时被创建,它们将是期望的对象。

我希望这很清楚。 如果没有,我会编辑。

0

如果您对每个测试都有不同的设置,您可能需要在需要的测试中运行设置。 在你的设置中有很多代码可能表明你正在使用集成测试而不是单元测试。 使用模拟对象可以大大减少您的测试设置逻辑。

单元测试应该有单一的责任,易于理解和维护,我认为参数化设置可能会伤害这个原因。