首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java测试(二)—— Mockito

2014-01-08 
Java测试(2)—— MockitoMockito是一个很流行的mock测试框架。网上已经有很多的例子。我感觉很多例子,比如mock

Java测试(2)—— Mockito

Mockito是一个很流行的mock测试框架。网上已经有很多的例子。我感觉很多例子,比如mock一个List,不具有代表性。这里我选了一个Strategy模式的例子,讲讲Mockito。

?

例子很简单,Someting构造时需要一个Strategy实例。会调用Strategy的doSomethingConcrete和doValidate方法。

?

public interface IStrategy {    public void doSomethingConcrete();    public boolean doValidate();}public class Strategy implements IStrategy {    @Override    public void doSomethingConcrete() {}    @Override    public boolean doValidate() {        return false;    }}public class Something {    IStrategy strategy;    public Something(IStrategy strategy) {        this.strategy = strategy;    }    public void doSomething(){        strategy.doSomethingConcrete();    }    public boolean validate() {        return strategy.doValidate();    }}

?
下面我们要用mockito测试Something:

@RunWith( MockitoJUnitRunner.class )public class TestExample {    @Mock    Strategy strategy;    Something objectUnderTest;    @Before    public void setUp() {        objectUnderTest = new Something(strategy);    }    @Test    public void testSomething() {        objectUnderTest.doSomething();        verify(strategy).doSomethingConcrete();    }    @Test    public void testDelegateSomething() {        when( strategy.doValidate() ).thenReturn( true );        boolean isValid = objectUnderTest.validate();        assertTrue( isValid );    }}

?

?测试用例虽短,却包含不少信息。

?

首先,可以使用@RunWith( MockitoJUnitRunner.class ) 告诉JUNIT我们要使用Mockito,而且我们使用了@Mock annotation表明我们要mock strategy的创建。在setup部分我们创建了用于测试的对象(因为这里有多于一个的测试,所以放在setup部分更简洁)。在第一个测试中,我们使用了verify,来验证straegy的doSomethingConcrete被调用。在第二个测试中,我们使用了when,thenReturn来个strategy的doValidate方法调用预设值。这样解释strategy的这个方法实现出错,而返回false,也不会影响我们对于something的测试。这也说明了mock的好处。

?

更多关于mockito的信息和例子

https://code.google.com/p/mockito/

http://eclipsesource.com/blogs/2011/09/19/effective-mockito-part-1/

?

?

热点排行