Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 45 Next »

Your Rating: Results: 1 Star2 Star3 Star4 Star5 Star 0 rates

Introduction

Magnolia uses JUnit 4 tests and Mockito (new) for creating unit tests. Before we were using EasyMock for dynamic mocks.
Independently from that make sure your tests match our conventions. Information on how to best migrate JUnit3-style tests to JUnit4 can be found here.

Mockito

Mockito is a more recent mocking library. We'll not bulk convert existing EasyMock-Tests as this would be to big an effort. Instead we set up the following rules:

  • all new tests requiring dynamic mocks use Mockito
  • whenever you touch (fix, adapt, complete) an existing test that's using EasyMock: convert it to Mockito

JCR Mocks

Since Magnolia 4.5 we provide the package info.magnolia.test.mock.jcr containing proper mock's for javax.jcr.Node, javax.jcr.Session etc. They're extending abstract types provided in jackrabbit-commons. The types of the Content API are now basically just wrapping these new mocks. If required you can always create a MockContent from a MockNode or a MockHierarchyManager from a MockSession.

With the help of info.magnolia.test.mock.jcr.SessionTestUtil MockNodes can be created from properties files

CreateMockNodeFromPropertiesFile.java
MockSession session = SessionTestUtil.createSession("test", getClass().getResourceAsStream("sample.properties"));

as well as from String:

CreateMockContentUsingAPI.java
MockSession session = SessionTestUtil.createSession("testWorkspace",
    "/foo/bar.@type=mgnl:content",
    "/foo/bar/sub1.@uuid=1",
    "/foo/bar/subpath.property=testName");

Of course there's also an proper API for it:

CreateMockNodeUsingAPI.java
MockNode root = new MockNode();
root.addNode(MetaData.DEFAULT_META_NODE);
root.setProperty("stringProperty", "HelloWorld");
  • No labels