【发布时间】:2018-11-02 13:58:20
【问题描述】:
目前我在 Java 方面有点平庸,对 JUnit 也很陌生,但我无法在其他地方找到这个问题的答案。
我想使用在我正在测试的类中定义的常量变量,在 Junit 测试用例本身中,但由于它是一个静态 final,它不可用。
我正在测试的类如下:
public class MyClass {
private static final int HSIZE = 7;
private static final int NUM_LOCS = 3;
.
.
.
void generateRandomLocations() {
Random rand = new Random();
String[] hPos = new String[NUM_LOCS];
for (int i=0; i<NUM_LOCS; i++) {
hPos[i] = Integer.toString(rand.nextInt(HSIZE));
}
setLocations(hPos);
}
}
足够简单,而且似乎工作正常,但我想在 JUnit 中添加一个测试用例 - 如下所示:
@Test
void testGenerateRandomLocations() {
MyClass mc = new MyClass();
mc.generateRandomLocations();
String[] check = mc.getLocations();
assertEquals(sadc.NUM_LOCS, check.length);
}
(getter 已定义,为简洁起见,这里没有包含它)
但是(当然)sadc.NUM_LOCS 不可用,因为它只在 MyClass 中可见。
如何从 JUnit (5) 测试用例中访问它?
【问题讨论】:
-
您可以将常量的可见性更改为公开而不是私有
-
当它们只在课堂上使用时,这不被认为是糟糕的编码标准吗?还是认为这样做可以以这种方式定义测试?