2011-05-03 107 views
0

是否有任何使EasyMock使用條件?我在我的方法中有一個if-else塊,但只有當我刪除條件塊時才通過測試。這可能是JUnit而非EasyMock的一個特殊問題。有人有這方面的任何信息?EasyMock條件和邏輯

+0

請提供代碼示例,如果沒有它,您的問題很難理解 – oers 2011-05-03 06:16:11

回答

1

如果我正確理解你的問題,你想根據變量返回不同的值。 這樣做的最好方法是使用IAnswer接口。

假設你有一個DAO類從一個點獲得一個顏色:

public class ColorDAO { 
    public Color getColorFromPoint(Point point) { 
     //Implementation 
    } 
} 

您可以創建一個答案:

ColorDao colorDao = EasyMock.createMock(ColorDao.class); 
EasyMock.expect(colorDao.getColorFromPoint(EasyMock.anyObject(Point.class))).andAnswer(new IAnswer<Color>() {  
     @Override 
     public Color answer() throws Throwable { 
      Point point = (Point) EasyMock.getCurrentArguments()[0]; 
      if (point .getX() > 0.0) { 
       return Color.BLACK; 
      } 
      return Color.YELLOW; 
     } 
     }); 
EasyMock.replay(colorDao); 

希望幫助;)

0

是測試中的條件或正在測試的方法?

如果在測試中,您可以有一個助手設置您的期望取決於輸入或您可能對各種輸入有預期。這些都不依賴於被測方法的行爲。

如果它在被測試的方法中,那麼您設置期望的方式不會受到正在測試的方法的影響,您需要設置對正常模擬行爲的期望。