EasyMock条件和逻辑

时间:2011-05-03 04:40:32

标签: unit-testing testing junit easymock

有没有让EasyMock与条件一起工作?我的方法中有一个if-else块,但是如果删除条件块,测试只会通过。这可能是JUnit特别是EasyMock的问题。有人对此有任何信息吗?

2 个答案:

答案 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)

测试中的条件或方法是否正在测试?

如果它在测试中你可以有一个帮助器根据输入设置你的期望,或者你可以对各种输入有期望。这些都不取决于被测试方法的行为。

如果它在被测试的方法中,那么您设置期望的方式不受所测试方法的影响,您需要像平常一样设置模拟行为的期望。