【发布时间】:2014-05-16 18:37:07
【问题描述】:
我有以下方法,我想使用 EasyMock 进行测试。
public String createNode(Session session, String name) throws RepositoryException {
Node root = session.getRootNode();
Node testNode = root.getNode( "content" );
if( !testNode.hasNode(name) ) {
testNode.addNode( name, "nt:unstructured" );
}
return testNode.getPath()+"/"+name;
}
测试方法是:
@Test
public void createNodeTest() throws RepositoryException {
final Session SESSION_MOCK = EasyMock.createNiceMock((Session.class));
final Node ROOT_NODE_MOCK = EasyMock.createNiceMock(Node.class);
final Node CONTENT_NODE_MOCK = EasyMock.createNiceMock(Node.class);
final Node CHILD_NODE_MOCK = EasyMock.createNiceMock(Node.class);
EasyMock.expect(SESSION_MOCK.getRootNode()).andReturn(ROOT_NODE_MOCK);
EasyMock.expect(ROOT_NODE_MOCK.getNode("content")).andReturn(CONTENT_NODE_MOCK);
EasyMock.expect(CONTENT_NODE_MOCK.hasNode("viv")).andReturn(false);
EasyMock.expect(CONTENT_NODE_MOCK.addNode("viv","nt:unstructured")).andReturn(CHILD_NODE_MOCK);
EasyMock.expect(CHILD_NODE_MOCK.getPath()).andReturn("/content/viv");
EasyMock.replay(SESSION_MOCK,ROOT_NODE_MOCK,CONTENT_NODE_MOCK);
TestableClass tc = new TestableClass();
assertEquals("/content/viv", tc.createNode(SESSION_MOCK,"viv"));
EasyMock.verify(SESSION_MOCK,CONTENT_NODE_MOCK,ROOT_NODE_MOCK);
}
获取失败:
org.junit.ComparisonFailure: 预期: 但是是:
任何人都可以告诉我哪里错了,我想通过测试。 谢谢
【问题讨论】:
-
如果您从
createNiceMock切换到createMock,EasyMock 将在看到未准备好的调用时抛出异常。您可能需要向expect(...).andStubReturn(...)添加一些额外的调用,但无论如何这将有助于调试。
标签: java unit-testing junit easymock