没有静态方法的junit测试



我需要为各种函数创建测试,这些函数不是静态的(不允许更改(。例如

public Double average(int[] scores) {
int sum = Arrays.stream(scores).sum();
return (double) sum/scores.length;
}

测试:

public void testAverage (){
int[] scores = {25, 100, 90, 72};
Double expected = 59.25;
Double result = LogicProblems.average(scores);
assertEquals(expected, result);
}

接口:public Double average(int[] scores);

这样做,我得到错误消息";不能从静态上下文调用非静态方法";

你能告诉我为什么上下文是静态的,以及如何处理它吗?

由于无法更改LogicProblems的代码,因此需要在测试中实例化它:

public void testAverage (){
int[] scores = {25, 100, 90, 72};
Double expected = 59.25;
LogicProblems lp = new LogicProblemsImpl(); // Or better yet, in a @Before method
Double result = lp.average(scores);
assertEquals(expected, result);
}

最新更新