{{ !articles[0].partner.isSponsoringArticle ? "Platinum" : "Portal" }} Partner

NoSQLUnit 0.6.0 Released!

 NoSQLUnit is a JUnit extension to make writing unit and integration tests of systems that use NoSQL backend easier. Visit official page for more information.

In 0.6.0 release, one new NoSQL system is supported and is HBase.
Apache HBase is an open-source, distributed, versioned, column-oriented store.
As all databases supported by NoSQLUnit, two set of rules are provided to write HBase tests:
First set of JUnit Rules are those responsible of managing database lifecycle; basically starting and stopping HBase instance.
  • Embedded: com.lordofthejars.nosqlunit.hbase.EmbeddedHBase
  • Managed: com.lordofthejars.nosqlunit.hbase.ManagedHBase
Depending on the kind of tests you are implementing (unit test, integration test, deployment tests, …) you will require an embedded, managed or remote approach. Note that for now I haven't implemented an In-Memory approach because there is no in-memory HBase  instance, but embedded strategy for unit tests will be the better one. 
Second set of rules are those responsible of maintaining database into known state;
  • NoSQLUnit Management: com.lordofthejars.nosqlunit.hbase.HBaseRule
And finally default dataset file format in HBase is json. Dataset in HBase is the same used by Cassandra-Unit but not all fields are supported. Only fields available in TSV HBase application can be set into dataset.
We will use a very simple example used in HBase tutorial as an example of how to write unit tests for systems that uses HBase database as backend.
First of all, dataset used to maintain HBase into known state:
    "name" : "person",
    "columnFamilies" : [{
        "name" : "personFamilyName",
        "rows" : [{
            "key" : "john",
            "columns" : [{
                "name" : "age",
                "value" : "22"
                "name" : "car",
                "value" : "toyota"
            "key" : "mary",
            "columns" : [{
                "name" : "age",
                "value" : "33"
                "name" : "car",
                "value" : "ford"
and finally the test case:
public class WhenPersonWantsToKnowItsCar {

	public static EmbeddedHBase embeddedHBase = newEmbeddedHBaseRule().build();
	public HBaseRule hBaseRule = newHBaseRule().defaultEmbeddedHBase(this);
	private Configuration configuration;
	@UsingDataSet(locations="persons.json", loadStrategy=LoadStrategyEnum.CLEAN_INSERT)
	public void car_should_be_returned() throws IOException {

		PersonManager personManager = new PersonManager(configuration);
		String car = personManager.getCarByPersonName("john");
		assertThat(car, is("toyota"));		
Stay in touch with the project and of course I am opened to any ideas that you think that could make NoSQLUnit better.

Published at DZone with permission of {{ articles[0].authors[0].realName }}, DZone MVB. (source)

Opinions expressed by DZone contributors are their own.

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks