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 as:
Maven dependency.
<project>
...
<dependencies>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-kernel</artifactId>
<version>${neo4j-version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
...
</dependencies>
...
</project>
Where ${neo4j-version} is the desired version of Neo4j.
With that in place, we’re ready to code our tests.
| Tip | |
|---|---|
For the full source code of this example see: Neo4jBasicTest.java |
Before each test, create a fresh database:
@Before
public void prepareTestDatabase()
{
graphDb = new TestGraphDatabaseFactory().newImpermanentDatabaseBuilder().newGraphDatabase();
}
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.
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" ) );
If you want to set configuration parameters at database creation, it’s done like this:
Map<String, String> config = new HashMap<String, String>(); config.put( "neostore.nodestore.db.mapped_memory", "10M" ); config.put( "string_block_size", "60" ); config.put( "array_block_size", "300" ); GraphDatabaseService db = new ImpermanentGraphDatabase( config );
Copyright © 2012 Neo Technology