考虑以下(伪ish)单元测试类。
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_CONSTANT和object使用访问修饰符。在非测试类中,您显然会公开尽可能少的类内嵌,并使用private修饰符。然而,在一个似乎并不重要的单元测试中,我们也可以让成员public。
那么,我所使用的访问修饰符是真的是任意的呢,还是缺少了什么呢?
发布于 2014-10-15 11:30:11
这是一个品味和项目标准的问题,但我通常采用的经验法则是,如果没有良好的理由让它成为public (或protected,就这一点而言),那么它应该是private。这可以防止其他测试错误地使用这些成员变量(同样,除非有一个良好的原因),并且主要帮助项目简化外观--生产代码和测试代码遵循相同的标准。
编辑:
正如@dkatzel在评论中提到的(谢谢!)由JUnit(或其他类似框架)注释的某些字段必须有一组特定的修饰符。例如,用@Rule注释的字段必须是public,带@ClassRule注释的字段必须是public static (至少来自JUnit 4.11 )。之前的4.x版本对static修饰符比较松懈)。
https://stackoverflow.com/questions/26381403
复制相似问题