Статьи

Выпущена NoSQLUnit 0.6.0!

 NoSQLUnit — это расширение JUnit для упрощения написания модульных и интеграционных тестов систем, использующих серверную часть NoSQL . Посетите официальную страницу для получения дополнительной информации.


В
версии 0.6.0 поддерживается одна новая
система
NoSQL
HBase .
Apache HBase — это распределенное, версионное, ориентированное на столбцы хранилище с открытым исходным кодом.

Поскольку все базы данных поддерживаются
NoSQLUnit , для написания тестов HBase предоставляются два набора правил
:

Первый набор
правил JUnit предназначен для управления жизненным циклом базы данных; в основном запуск и остановка
экземпляра
HBase .
  • Встроенный:  com.lordofthejars.nosqlunit.hbase.EmbeddedHBase
  • Управляется:  com.lordofthejars.nosqlunit.hbase.ManagedHBase

В зависимости от типа выполняемых вами тестов (модульное тестирование, интеграционное тестирование, тесты развертывания и т. Д.) Вам потребуется
встроенный ,
управляемый или
удаленный подход. Обратите внимание, что на данный момент я не реализовал
подход
In-Memory, потому что нет   экземпляра HBase в памяти
, но лучше будет встроенная стратегия для модульных тестов. 

Второй набор правил — это те, кто отвечает за поддержание базы данных в известном состоянии;
  • Управление NoSQLUnitcom.lordofthejars.nosqlunit.hbase.HBaseRule

И, наконец, формат файла набора данных по умолчанию в
HBase
json . Набор данных в
HBase используется
Cassandra-Unit, но не все поля поддерживаются. В набор данных могут быть установлены только поля, доступные в
приложении
TSV HBase .

Мы будем использовать очень простой пример, используемый в
руководстве по
HBase, как пример того, как писать модульные тесты для систем, которые используют
базу данных
HBase в качестве бэкэнда.

Прежде всего, набор данных, используемый для поддержания
HBase в известном состоянии:
{
    "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"
            }]
        }]
    }]
}

и, наконец, контрольный пример:
public class WhenPersonWantsToKnowItsCar {

	@ClassRule
	public static EmbeddedHBase embeddedHBase = newEmbeddedHBaseRule().build();
	
	@Rule
	public HBaseRule hBaseRule = newHBaseRule().defaultEmbeddedHBase(this);
	
	@Inject
	private Configuration configuration;
	
	
	@Test
	@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"));		
	}
	
}
Оставайтесь на связи с проектом и, конечно, я открыт для любых идей, которые, по вашему мнению, могут сделать
NoSQLUnit лучше.