Basic unit testing

Unit testing a graph application

The basic pattern of unit testing with Neo4j is illustrated by the Neo4jBasicTest.java test.

Before each test, create a fresh database, deleting any pre-existing files:

        deleteFileOrDirectory( testDatabasePath );
        graphDb = new EmbeddedGraphDatabase( testDatabasePath.getAbsolutePath() );

File cleanup could happen here instead, but that would miss the opporunity to inspect the database after a test run. Instead, just shutdown the database:

        graphDb.shutdown();

During a test, create nodes and check to see that they are there, being careful to enclose write operations in a transaction.

        Transaction tx = graphDb.beginTx();
        
        Node n = null;
        try
        {
            n = graphDb.createNode();
            n.setProperty( "name", "Nancy" );
            tx.success();
        } catch ( Exception e )
        {
            tx.failure();
        } finally
        {
            tx.finish();
        }

        // The node should have an id greater than 0, which is the id of the reference node.
        assertThat( n.getId(), is( greaterThan( 0l ) ) );

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

Full source code: Neo4jBasicTest