考虑以下(伪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);
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是,是否有任何最佳实践可以使用哪个访问修饰符用于成员MY_CONSTANT和object.在非测试类中,您显然会尽可能少地暴露类内部并使用private修饰符.但是,在一个看似不重要的单元测试中,我们也可以成为成员public.
那么我使用的访问修饰符是否真的是任意的,或者我错过了什么?
这是一个品味和项目标准的问题,但我通常会遵循经验法则,即如果没有充分的理由public(或者protected,就此而言),它应该是private.这可以防止其他测试错误地使用这些成员变量(同样,除非有充分的理由)并且主要有助于为项目提供简化的外观 - 生产代码和测试代码遵循相同的标准.
编辑:
正如@dkatzel在评论中提到的那样(谢谢!)一些由JUnit(或其他类似框架)注释注释的字段必须具有一组特定的修饰符.例如,用注释字段@Rule必须public与注释字段@ClassRule必须是public static(至少从JUnit的4.11.此前4.x的版本都比较松懈的一点static修改).
| 归档时间: |
|
| 查看次数: |
679 次 |
| 最近记录: |