要測試method1
您只需要像測試其他方法一樣測試它。在這種情況下,被測對象Singleton類不應該被模擬。
通常在設置方法,然後創建測試(測試對象)測試對象即類:
@Test
public void testMethod1() {
int testValue = 1;
int expectedResult = 2;
assertThat(testee.method1(testValue), equalTo(expectedResult));
}
在上面的例子中,我會用參數化測試的東西,如JUnitParams到例如測試界限,整數MAX_VALUE等
@Test
@Parameters(method = "method1Params")
public void testMethod1(int testValue, int expectedResult) {
assertThat(testee.method1(testValue), equalTo(expectedResult));
}
@Ignore
private final Object[] method1Params() {
return new Object[] {
new Object { 1, 2 },
new Object { -2, -1 }
};
}
嘲諷主要用於當你要測試的SUT,在這種情況下,辛格爾頓從其他組件(合作者)隔離,以確保正確的行爲。在這種情況下,這是沒有必要的。
時,你可以使用一個模擬
public int method1(DependedOnComponent doc) {
int a = 1;
int ret = doc.method2(a);
return ret;
}
然後
@Test
public void testMethod1() {
DependedOnComponent mockDOC = mock(DependedOnComponent.class);
// When method2() is called you control the value returned
when(mockDOC.method2(1)).thenReturn(2);
assertThat(testee.method1(mockDOC), equalTo(2));
}
來源
2014-09-29 14:56:24
clD
爲什麼你需要爲了測試方法1嘲笑方法2? – clD 2014-09-29 11:41:20
我是單元測試新手。我認爲,爲了測試方法1,我將不得不創建一個虛擬方法2,以便不發生對實際方法2的調用。如果我的方法不正確,請告訴我應該怎麼做單元測試方法1? – Siddharth 2014-09-29 14:39:03