我已經開始學習JUNIT。 這是我想要實現的。 我有一個類,它檢查inputString是否是secretKey的一部分;MockedObject和Real Object給出了不同的結果
public class StringChecker {
public boolean isEqual(String name)
{
boolean isEqual = false;
if(getSecretKey().contains(name))
{
isEqual = true;
}
return isEqual;
}
public String getSecretKey()
{
return "OSKAR";
}
}
我的測試類是這個
public class RandomCheck {
@Test
public void isEqualTest()
{
StringChecker stringChecker = mock(StringChecker.class);
when(stringChecker.getSecretKey()).thenReturn("james");
//assertEquals(true, new StringChecker().isEqual("OSKAR")); <----this test case passes
assertEquals(true, stringChecker.isEqual("james"));
}
}
當我用嘲笑對象時,它並沒有給我預期的結果,因此未能通過測試。但是當我使用一個真實的物體時,它會給我預期的結果並通過測試。 我錯過了什麼?像任何註釋
我不明白 。你在問或告訴解決方案? –
它的答案。一旦你嘲笑課堂,它不再是真實的東西(物體)。所以'StringChecker'內部的實現代碼不太好。你在'getSecretKey'上設置一個模擬的返回值,但不在'isEqual'上。 –
如果你想在你的例子中進行測試,你可以使用mockito'spy',在那裏你選擇性地只模擬一部分課程,並保持其餘部分'真實'。 –