隨着JMockit V12,這個測試通過(不是真正的代碼,但足以說明問題):Jmockit:期望()工作在V12但不是在V13/V14(Java SE的8,TestNG的13年6月8日)
import mockit.Expectations;
import mockit.Mocked;
import org.testng.Assert;
import org.testng.annotations.Test;
public class JmockitExperimentsTest2
{
public class MyClass
{
public int getValue()
{
return 5;
}
}
@Mocked
MyClass myClass;
@Test()
public void jmockitTest()
{
new Expectations()
{
{
myClass.getValue();
returns(8);
myClass.getValue();
returns(4);
}
};
Assert.assertEquals(myClass.getValue(), 8);
Assert.assertEquals(myClass.getValue(), 4);
}
}
隨着JMockit V13(和V14)它得到此斷言失敗:
java.lang.AssertionError: expected [8] but found [4]
我得到了V13/V14相同的斷言失敗,如果我在的地方「預期」的使用「NonStrictExpectations」。但是,如果我在v13/v14中將「期望」更改爲「嚴格期望」,則不存在斷言失敗。
我從JMockit change log看到,在第13版中對Expectations
進行了更改,所以我可能不瞭解更改日誌中關於預期內容的描述。但看起來這種變化不是向後兼容的。
讓我非常困惑的是,爲什麼「嚴格」的作品和「非嚴格」沒有 - 我期望隨時「嚴格」成功,「非嚴格」也會成功。
我在做什麼錯?
更新:
使用的Rogerio的答案,下面的改變消除了問題:
new Expectations()
{
{
myClass.getValue();
returns(8, 4);
}
};
好的,在這裏扮演魔鬼的擁護者,但你有沒有考慮換用mockito? – fge
@fge,爲什麼會考慮從'JMockit'切換到'Mockito'?這可以說是最完整的測試/模擬解決方案。 – mystarrocks
@mystarrocks表示還沒有嘗試過mockito的人......我已經抽樣了; mockito絕對優越,如果只有一點:易於使用 – fge