2016-09-14 42 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

相關問題