![]() |
1
5
对于单独的mock类,您可能认为它是自包含的,并且满足SRP,但是与mock类属性的语义耦合仍然存在。所以,真的,我们没有实现任何有意义的分离。
现在我们来模拟一下:
在实际应用中(IMHO)的耦合度较高
编辑 我刚刚在罗伯特·C·马丁(Robert C.Martin)的优秀著作中遇到了一个关于自我分流模式的简短提及 Agile Principles, Patterns, and Practices in C# . 以下是书中的片段:
因此,创造SRP的人(在同一本书中详细讨论过)对使用自分流模式没有任何疑虑。有鉴于此,我想说的是,在使用这种模式时,您对于OOP(面向对象的警察)是非常安全的。 |
![]() |
2
3
在我看来是的 是 违反规定,但很轻微。 和 对你正在测试的东西的依赖。 然而,这是一件坏事吗?为了几个简单的测试,可能不是。随着测试用例数量的增长,您可能需要重构并使用模拟类来分离一些关注点。(正如你贴的链接所说,自我分流是嘲笑的垫脚石)。但是如果测试用例的数量仍然是静态的和低的,那么问题是什么呢? 我认为需要一点实用主义。是否违反SRP?是的,但我猜可能没有你测试的系统中的一些代码那么多。你需要做些什么吗?不,只要代码清晰且可维护就行,这对我来说永远是底线。SRP是一个准则,而不是一个规则。 |
![]() |
3
1
如果正在实现或分流的接口发生了变化,那么测试套件也相对有可能发生变化。所以我并不认为这违反了SRP。 |
![]() |
4
1
FWIW除非您使用的是C#(或python或类似工具)之类的强大工具,否则当您更改接口时,测试代码将发生更改。 |
![]() |
mg610 · 如何开始C++单元测试 2 年前 |
![]() |
Phil Gunning · 使用嵌套函数更改进行模拟测试 2 年前 |
![]() |
shilin agre · 在Python中测试修饰函数 2 年前 |
![]() |
SlipScout · Unittest只传递单个值,而不是获取多个值 2 年前 |
![]() |
Alex · 从实际对象的实例返回默认模拟结果 2 年前 |