2016-01-29 47 views
1

我可以做一個void方法拋出這樣的例外:在jmockit中,我該如何模擬一個void方法來在第一次調用時拋出一個異常,而不是在隨後的調用中?

class TestClass { 
    public void send(int a) {}; 
} 

@Mocked 
private TestClass mock; 

@Test 
public void test() throws Exception { 
    new Expectations() { 
     { 
      mock.send(var1); 
      this.result = new Exception("some exception"); 
     } 
    }; 
} 

但是,如果我想虛空方法扔在第一次調用一個例外,而不是在後續調用,這些方法似乎沒有做工作:

@Test 
public void test() throws Exception { 
    new Expectations() { 
     { 
      mock.send(var1); 
      this.result = new Exception("some exception"); 
      this.result = null; 
     } 
    }; 
} 

@Test 
public void test() throws Exception { 
    new Expectations() { 
     { 
      mock.send(var1); 
      results(new Exception("some exception"), new Object()); 
     } 
    }; 
} 

他們都造成不拋出異常。

這可能與JMockit?我不清楚從文檔herehere。我

回答

1

下面的測試工作正常:

static class TestClass { void send(int a) {} } 
@Mocked TestClass mock; 
int var1 = 1; 

@Test 
public void test() { 
    new Expectations() {{ 
     mock.send(var1); 
     result = new Exception("some exception"); 
     result = null; 
    }}; 

    try { mock.send(var1); fail(); } catch (Exception ignore) {} 
    mock.send(var1); 
} 
相關問題