EasyMock.createStrictMock(class <t> x)和EasyMock.createNiceMock(class <t> x)之间的区别</t> </t>

时间:2014-02-13 05:43:19

标签: java easymock

在API文档中提到,在严格模式下,默认情况下启用了检查,而在模拟不好的情况下则不是。我没有得到“订单检查”的确切含义。

2 个答案:

答案 0 :(得分:11)

如果你告诉模拟人员希望拨打foo(),那么期待拨打bar(),实际通话为bar(),然后foo(),严格mock会抱怨,但一个好的模拟不会。这就是订单检查的意思。

答案 1 :(得分:0)

EasyMock.createStrictMock()创建一个模拟,并且还会处理模拟在其操作过程中将要进行的方法调用的顺序。 考虑下面的例子: Click here for complete tutorial.

CREATE TABLE ... text/varchar

EasyMock.createNiceMock():如果多个方法具有相同的功能,我们可以创建NiceMock对象并仅创建1个expect(方法)并可以创建多个assert(method1),assert(method2),...

@Before
   public void setUp(){
      mathApplication = new MathApplication();
      calcService = EasyMock.createStrictMock(CalculatorService.class);
      mathApplication.setCalculatorService(calcService);
   }

   @Test
   public void testAddAndSubtract(){

      //add the behavior to add numbers
      EasyMock.expect(calcService.add(20.0,10.0)).andReturn(30.0);

      //subtract the behavior to subtract numbers
      EasyMock.expect(calcService.subtract(20.0,10.0)).andReturn(10.0);

      //activate the mock
      EasyMock.replay(calcService); 

      //test the subtract functionality
      Assert.assertEquals(mathApplication.subtract(20.0, 10.0),10.0,0);

      //test the add functionality
      Assert.assertEquals(mathApplication.add(20.0, 10.0),30.0,0);

      //verify call to calcService is made or not
      EasyMock.verify(calcService);
   }