Prev |  | Next

## 33.6. Basic unit testing

The basic pattern of unit testing with Neo4j is illustrated by the following example.

To access the Neo4j testing facilities you should have the `neo4j-kernel` tests.jar on the classpath during tests. You can download it from Maven Central: org.neo4j:neo4j-kernel.

Using Maven as a dependency manager you would typically add this dependency together with JUnit and Hamcrest like so:

Maven dependency.

    <project>
    ...
     <dependencies>
      <dependency>
       <groupId>org.neo4j</groupId>
       <artifactId>neo4j-kernel</artifactId>
       <version>2.1.0-M01</version>
       <type>test-jar</type>
       <scope>test</scope>
      </dependency>
      <dependency>
       <groupId>junit</groupId>
       <artifactId>junit-dep</artifactId>
       <version>4.11</version>
       <scope>test</scope>
      </dependency>
      <dependency>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest-all</artifactId>
       <version>1.3</version>
       <scope>test</scope>
      </dependency>
      ...
     </dependencies>
    ...
    </project>

Observe that the `<type>test-jar</type>` is crucial. Without it you would get the common `neo4j-kernel` jar, not the one containing the testing facilities.

With that in place, we’re ready to code our tests.

| Tip
For the full source code of this example see: Neo4jBasicDocTest.java

Before each test, create a fresh database:

    @Before
    public void prepareTestDatabase()
    {
        graphDb = new TestGraphDatabaseFactory().newImpermanentDatabase();
    }

After the test has executed, the database should be shut down:

    @After
    public void destroyTestDatabase()
    {
        graphDb.shutdown();
    }

During a test, create nodes and check to see that they are there, while enclosing write operations in a transaction.

    Node n = null;
    try ( Transaction tx = graphDb.beginTx() )
    {
        n = graphDb.createNode();
        n.setProperty( "name", "Nancy" );
        tx.success();
    }

    // The node should have a valid id
    assertThat( n.getId(), is( greaterThan( -1L ) ) );

    // Retrieve a node by using the id of the created node. The id's and
    // property should match.
    try ( Transaction tx = graphDb.beginTx() )
    {
        Node foundNode = graphDb.getNodeById( n.getId() );
        assertThat( foundNode.getId(), is( n.getId() ) );
        assertThat( (String) foundNode.getProperty( "name" ), is( "Nancy" ) );
    }

If you want to set configuration parameters at database creation, it’s done like this:

    GraphDatabaseService db = new TestGraphDatabaseFactory()
        .newImpermanentDatabaseBuilder()
        .setConfig( GraphDatabaseSettings.nodestore_mapped_memory_size, "10M" )
        .setConfig( GraphDatabaseSettings.string_block_size, "60" )
        .setConfig( GraphDatabaseSettings.array_block_size, "300" )
        .newGraphDatabase();

Copyright © 2014 Neo Technology

Prev | Up | Next
| Home |