首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试成员变量是私有的还是公共的?

单元测试成员变量是私有的还是公共的?
EN

Stack Overflow用户
提问于 2014-10-15 11:27:05
回答 1查看 1.3K关注 0票数 4

考虑以下(伪ish)单元测试类。

代码语言:javascript
复制
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class MyTest {

    private static final int MY_CONSTANT = 7;

    private Object object;

    @Before
    public void setUp() throws Exception {
        object = new Object();
    }

    @Test
    public void test1() {
        Assert.assertEquals(MY_CONSTANT, object.property1);
    }

}

我想知道的是,是否有任何最佳实践可供成员MY_CONSTANTobject使用访问修饰符。在非测试类中,您显然会公开尽可能少的类内嵌,并使用private修饰符。然而,在一个似乎并不重要的单元测试中,我们也可以让成员public

那么,我所使用的访问修饰符是真的是任意的呢,还是缺少了什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-15 11:30:11

这是一个品味和项目标准的问题,但我通常采用的经验法则是,如果没有良好的理由让它成为public (或protected,就这一点而言),那么它应该是private。这可以防止其他测试错误地使用这些成员变量(同样,除非有一个良好的原因),并且主要帮助项目简化外观--生产代码和测试代码遵循相同的标准。

编辑:

正如@dkatzel在评论中提到的(谢谢!)由JUnit(或其他类似框架)注释的某些字段必须有一组特定的修饰符。例如,用@Rule注释的字段必须是public,带@ClassRule注释的字段必须是public static (至少来自JUnit 4.11 )。之前的4.x版本对static修饰符比较松懈)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26381403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档