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 в памяти
, но лучше будет встроенная стратегия для модульных тестов.
Второй набор правил — это те, кто отвечает за поддержание базы данных в известном состоянии;
- Управление NoSQLUnit : com.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 лучше.
NoSQLUnit лучше.