- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何限制用户调用仅用于单元测试的方法?如果调用不是在单元测试的上下文中进行的,我正在考虑抛出异常,但我不知道对于在调试下构建的项目,测试是否具有诸如“DEBUG”之类的符号。
我可以使用它的一个实例是 DTO 及其身份。为了正确模拟持久化 DTO,我需要为我将使用的实体分配一个 Id。我可以通过为该特定目的添加一个方法或添加一个构造函数来做到这一点,但我想清楚的是,将 Id 分配给实体应该只适用于单元测试,并且永远不应该在实际代码本身上完成。
最佳答案
一般来说,不建议只从单元测试中调用方法。理想情况下,被测代码在单元测试中的行为不应与在现实世界中的行为不同。也就是说,有时这样的技巧是不可避免的,例如在尝试为从未设计为可单元测试的遗留代码编写测试时。
即使在这些情况下,“仅测试”方法也应该是一个临时的捷径,而不是一个长期的解决方案。所以我不会太担心检测是否从外部单元测试调用该方法。相反,一旦我用测试很好地覆盖了代码,就会努力重构它以摆脱“仅测试”方法和其他临时脚手架,努力实现更清洁、更安全的设计。
如果您详细说明您的方法的实际用途,我们或许可以提供更具体的建议。
关于这个主题的推荐阅读是Working Effectively with Legacy Code .
感谢您的解释。我们在遗留项目中的几个地方也有这样的检查,所以我知道有时这是不可避免的。幸运的是,我们还不需要为这些地方编写单元测试(好吧,如果我们的代码中只有这些地方没有单元测试,我会很高兴:-)。
我想到了一个替代解决方案:将实体 ID 检查提取到一个单独的(虚拟)方法中(可能在一个单独的接口(interface)中)并在单元测试中覆盖/模拟它。这样,您只需几行额外的代码就可以消除对仅测试方法的需求。希望这会有所帮助:-)
关于.net - 你如何指定一个方法只能被单元测试调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4907157/
有一条(相对)众所周知的 Perl 公理:“只有 Perl 可以解析 Perl”。我想知道 Perl 6 是否仍然如此? 扩大讨论...考虑到 PyPy 最近的更新,我想到了这个问题。 Perl 独特
这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用 componentDidUpdate 获取该对象属性。在这种情况下,状态和属性都称为到达。 这是基本代码... expo
我运行的是 10.5.2 社区版。我已经标记了 源/主要/资源 作为源目录。我可以右键单击并“编译”某些文件,据我所知,这意味着 IDE 将文件复制到与发送类文件的“com.mydomain.pack
我是一名优秀的程序员,十分优秀!