|
10
|
| pete the pagan-gerbil · 技术社区 · 15 年前 |
|
|
1
23
规则不是“模拟一切”,而是“使测试简单化”。如果
|
|
2
9
TDD并不是真正的测试。它的主要好处是帮助您设计干净、易于使用的代码,其他人可以理解和更改这些代码。如果它的主要好处是测试,那么您将能够在代码之后而不是之前编写测试,并具有相同的效果。 如果可以的话,我建议你不要把它们当作“单元测试”。相反,将您的测试视为如何使用代码的示例,以及对代码行为的描述,这些描述说明了代码为什么有价值。
如果您的实用程序类是类行为的核心部分,并且您的类没有价值,或者没有它们它的行为就没有意义,那么不要嘲笑它们。
希望这有意义!如果你喜欢,可以看看BDD,它使用的词汇远远多于“test”。 |
|
|
3
4
理论上你应该试着嘲笑所有的依赖关系,但实际上这是不可能的。E、 你不会去模仿标准库中的基本类。在您的例子中,如果实用程序类只包含一些基本的helper方法,我想我就不会去嘲笑它了。 如果它比这更复杂,或者连接到一些外部资源,则必须模拟它。您可以考虑创建一个专用的mock builder类,它将为您创建一个标准mock(定义了一些标准存根等),这样您就可以避免在所有测试类中模拟代码重复。 |
|
|
4
2
不,这是不可接受的,因为您不再孤立地测试类,这是单元测试最重要的方面之一。即使该实用程序有自己的一组测试,也可以使用它对该实用程序的依赖性对其进行测试。为了简化模拟对象的创建,可以使用模拟框架。以下是一些流行的选择: 当然,如果这个实用程序类是私有的,并且只能在被测类的范围内使用,那么就不需要模拟它。 |
|
|
5
1
是的,可以接受。重要的是让UtilityClass进行彻底的单元测试,并且能够区分测试是因为被测类还是因为UtilityClass而失败。
|