有没有让EasyMock与条件一起工作?我的方法中有一个if-else块,但是如果删除条件块,测试只会通过。这可能是JUnit特别是EasyMock的问题。有人对此有任何信息吗?
答案 0 :(得分: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);
希望有所帮助;)
答案 1 :(得分:0)
测试中的条件或方法是否正在测试?
如果它在测试中你可以有一个帮助器根据输入设置你的期望,或者你可以对各种输入有期望。这些都不取决于被测试方法的行为。
如果它在被测试的方法中,那么您设置期望的方式不受所测试方法的影响,您需要像平常一样设置模拟行为的期望。