我正嘗試通過Mockito使用PowerMock;因爲我喜歡API的whennew()和verifyprivate(),但當我嘗試在Junit中運行類TestRunner的測試套件時遇到了一些問題。當使用PowerMockRule使用PoweMock時ExpectedException測試失敗
對於使用默認的JUnit測試運行器,我創建了一個TestCase並添加了PowerMockRule作爲實例字段,其中@Rule註釋。而執行測試像這樣工作,的ExpectedException TestRule是不工作連用
示例代碼
@PowerMockIgnore ("*")
@PrepareForTest (CustomizedSSHConnection.class)
public class TestExpectedExceptionRule {
private Connection connection;
private ConnectionInfo connectionInfo;
@Rule
public PowerMockRule rule = new PowerMockRule();
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testExcepitonWithPowerMockRule() {
exception.expect (NullPointerException.class);
exception.expectMessage ("Image is null");
throw new NullPointerException ("Image is null");
}
}
當代替使用@rule PowerMockRule的,如果我使用@RunWith(PowerMockRunner.class)此測試用例會通過。
另外一個觀察是,如果我用@ClassRule註釋PowerMockRule,這會成功,但一些模擬方法會拋出異常。
它以什麼方式不起作用?什麼是行爲?它沒有得到預期的例外,並且因爲預期異常而失敗了。 – 2015-02-11 16:57:30
預期的輸出是驗證與消息一起拋出的異常並返回成功;但相反,它將拋出異常提升爲未捕獲的異常,並將測試報告爲錯誤。 – 2015-02-11 18:36:04
約翰,我能夠解決這個問題,使用@Test註釋期望的屬性。但尋找一些使用ExpectedException TestRule來驗證異常的正確方法。 – 2015-02-11 18:41:51