Java 没有静态方法的junit测试

Java 没有静态方法的junit测试,java,testing,junit,compiler-errors,static,Java,Testing,Junit,Compiler Errors,Static,我需要为各种函数创建测试,这些函数不是静态的(不允许更改)。 例如 测试: 接口: 公共双平均(int[]分) 这样,我得到错误消息“不能从静态上下文调用非静态方法” 你能告诉我为什么上下文是静态的,以及如何处理它吗?既然你不能更改逻辑问题的代码,你需要在测试中实例化它: public void testAverage(){ int[]得分={25100,90,72}; 预期加倍=59.25; LogicProblems lp=new LogicProblemSiml();//或者更好,在@Be

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

测试:

接口:
公共双平均(int[]分)

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


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

既然你不能更改
逻辑问题的代码,你需要在测试中实例化它:

public void testAverage(){
int[]得分={25100,90,72};
预期加倍=59.25;
LogicProblems lp=new LogicProblemSiml();//或者更好,在@Before方法中
双结果=lp.平均值(分数);
资产质量(预期、结果);
}

如果要调用
LogicProblems
类中定义的非静态方法,则需要使用
LogicProblems
的实例。这就是不是静态的意思。根据类的编写方式,它可能像
newLogicProblems().average(scores)
一样简单。当我尝试后一种方法时,它会说lp是抽象的,不能是抽象的instantiated@idanicoleherbert大概你有一个具体的类来扩展它,你可以使用它?我有一个类来实现它,但是如果我将实现方法更改为static,它会给我一个错误,即我无法覆盖实例方法“average int[]”@idanicoleherbert您需要实例化扩展
LogicProblems
的具体类。我编辑了我的答案,以证明在假设下,它被称为简单的
LogicProbelSimple
。如果调用了其他名称,只需替换名称(如果需要,将必要的参数传递给其构造函数)即可。谢谢,现在可以用了。谢谢你的帮助。
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);
}