2016-09-14 44 views
-1

测试类需要在具体类中将方法定义为静态。但具体类从一个接口实现了一个方法。测试类要求具体类中的方法是静态的

该接口不允许实现的方法是静态的。

接口:

public interface ArithmeticSkeleton { 

    public int operation(int a, int b); 

} 

具体类

public class Divide implements ArithmeticSkeleton{ 

    public int operation(int a, int b) {   
     return (a/b); 
    } 
} 

JUnit测试用例:

public class ArithmeticSkeletontest { 

    private ArithmeticSkeleton as; 

    @Test 
    public void testDivision() throws Exception { 
     assertEquals("5", Divide.operation(10, 2)); 
    } 

} 

然而,吨他测试代码不允许Divide.operation被访问。

+0

您不能访问的操作方法,以这样一种方式如果你想这样做,你必须使用静态方法,否则只需要新的Divide()。操作(10,2)就足够了 – imoteb

+1

除了在这里使用答案外,还需要将''5''更改为' 5'内'assertEquals'来做这个测试通过。 –

回答

0

操作方法不是静态的。为此,你必须实例化鸿沟类这样的对象在测试

@Test 
public void testDivision() throws Exception { 
    assertEquals("5", new Divide().operation(10, 2)); 
} 
1

需要初始化阶级划分的对象来访问它的方法:

public void testDivision() throws Exception { 
      Divide divide = new Divide(); 
      assertEquals(5, divide.operation(10, 2)); 
// you need to change "5" to 5 to pass this test 
} 
+0

@ramnarayanan你能接受这个答案吗? – user3662708

相关问题