![]() |
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或类似工具)之类的强大工具,否则当您更改接口时,测试代码将发生更改。 |
![]() |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
![]() |
cobby · 在战略模式中使用工厂模式? 3 年前 |
![]() |
Nobody · Java中带while循环的三角形模式 3 年前 |
![]() |
Eduard Stefanescu · 如何在层之间传输异常? 7 年前 |
![]() |
D. Schreier Talha Noyon · 对于目录中的每个类 7 年前 |
![]() |
Tanvi Jaywant · 如何重载类 7 年前 |