2012-01-08 29 views
0

,所以我說都來自JMock的2.5.1org.jmock.Mock不再可用?

罐子在試圖遵循http://www.ibm.com/developerworks/opensource/library/os-eclipse-rmock/index.html

import org.jmock.Mock; 
import org.jmock.cglib.MockObjectTestCase; 
public class ServiceClassTest extends MockObjectTestCase { 
    private ServiceClass serviceClass; 
    private Mock mockCollaborator; 
    private ICollaborator collaborator; 

    public void setUp(){ 
     serviceClass = new ServiceClass(); 
     mockCollaborator = new Mock(ICollaborator.class); 
    } 

    public void testRunServiceAndReturnFalse(){ 
     mockCollaborator.expects(once()).method\ 
       ("executeJob").will(returnValue("failure")); 
     collaborator = (ICollaborator)mockCollaborator.proxy(); 
     boolean result = serviceClass.runService(collaborator); 
     assertFalse(result); 
    } 
} 

但是,它不工作?它找不到org.jmock.Mock,而是提示Mockery。我嘗試使用Mockery,但它似乎不允許傳遞參數。

回答

1

該教程使用過時的JMock 1。在JMock 2中,Mock類已被廢除,替換爲Mockery和泛型。

而不是

Mock mockCollaborator = new Mock(ICollaborator.class); 

你會做

ICollaborator mockCollaborator = mockery.mock(ICollaborator.class); 

其中mockeryMockery類型的字段。

我建議完全忽略該教程,並使用JMock website上的教程。