当前位置:  开发笔记 > 编程语言 > 正文

生产和测试代码常量之间的干燥

如何解决《生产和测试代码常量之间的干燥》经验,为你挑选了2个好方法。

我通常会尽量避免重复并遵守DRY原则.但是,我想知道这样的情况:

public class Feature {
    final static String FEATURE_LABEL = "blah";

    public void doSomething() { ... }
    ...
}

public class FeatureTest {
    ...
    @Test
    public void doSomethingShouldMakeSomethingHappen() {
         assertEquals(Feature.FEATURE_LABEL, 
             feature.getSomethingHappens().getLabel());
    }

如果要求标签是"blah"并且某人将FEATURE_LABEL更改为"bleh",则即使测试不再符合要求,测试也会通过.这是否是违反DRY的有效地方?



1> Andy Dent..:

是的,在这里使用文字.

引用自己的文字问题:

硬编码文字应该出现在测试值的单元测试中,除非在单个测试类中重复使用一个局部常量有用的值.

单元测试是对期望值的描述,没有任何抽象或重定向.想象一下你自己在阅读测试 - 你希望信息完全在你面前.



2> Frederick Th..:

为了测试某些东西 - 任何东西 - 一个重要的考虑因素是你的测试条件与你正在测试的东西无关.否则,您的测试没有单一,可靠的含义; 每当被检查对象发生变化时,它们就会变成其他测试.

不是一件好事.

同样的想法适用于单元测试.在上面的上下文中,您正在测试的字符串应该完全独立于测试类中的内容.换句话说,是的,你可以而且应该违反DRY原则.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有