Как смоделировать БД для тестирования (Java)?



я программирую на Java и приложений много использование БД. Следовательно, для меня важно иметь возможность легко тестировать мое использование БД.

О каких тестах БД идет речь? Для меня они должны обеспечить два простых требования:




  1. проверка синтаксиса SQL.

  2. что еще более важно, убедитесь, что данные выбраны/обновлено/правильно, в соответствии с конкретной ситуацией.


Ну, кажется, что все что мне нужно ДЕЦИБЕЛ.

Но на самом деле, я предпочитаю не, так как есть несколько трудностей с использованием БД для теста:




  • " просто получить себе тестовую БД, как трудно это может быть?"- Ну, на моем рабочем месте иметь личную тестовую БД довольно невозможно. Вы должны использовать "публичную" БД,которая доступна для всех.

  • эти тесты, конечно, не быстро..."- Тесты БД, как правило, медленнее, чем обычные тесты. Это действительно не идеально, чтобы иметь медленные тесты.

  • "эта программа должна разберись с любым делом!"- Становится несколько раздражающим и даже невозможным пытаться имитировать каждый случай в БД. Для каждого случая должно быть сделано определенное количество запросов вставки/обновления, что раздражает и требует времени.

  • Подожди секунду, откуда ты знаешь, что в этой таблице 542 строки?"- Один из основных принципов тестирования, чтобы иметь возможность проверить функциональность в пути, отличном от вашего тестируемого кода. При использовании БД, как правило, есть один способ сделать что-то, поэтому тест точно такой же как основной-код.


Итак, вы можете понять, что мне не нравится DBs, когда дело доходит до тестов (конечно, мне придется добраться до этого в какой-то момент, но я предпочел бы попасть туда позже на моем тестировании, после того, как я нашел большинство ошибок, используя остальные методы тестирования). Но что я ищу?



Я ищу способ имитировать БД, макет БД, используя файловую систему или просто виртуальную память. Я думал, что, возможно, есть инструмент/пакет Java что позволяет просто построить (используя интерфейс кода) макет БД для каждого теста, с моделируемыми таблицами и строками, с проверкой SQL и с интерфейсом кода для мониторинга его состояния (а не с использованием SQL).



вы знакомы с таким инструментом?





Edit: Спасибо за ответы! Хотя я просил инструмент, вы также предоставили мне несколько советов по этой проблеме :) мне потребуется некоторое время, чтобы проверить ваши предложения, поэтому я не могу сказать прямо сейчас, были ли ваши ответы удовлетворительными.



в любом случае, вот лучшее представление о том, что я ищу - представьте себе класс с именем DBMonitor, что одна из его функций-найти количество строк в таблице. Вот воображаемый код того, как я хотел бы проверить эту функцию с помощью JUnit:



public class TestDBMonitor extends TestCase {

@Override
public void setUp() throws Exception {

MockConnection connection = new MockConnection();

this.tableName = "table1";
MockTable table = new MockTable(tableName);

String columnName = "column1";
ColumnType columnType = ColumnType.NUMBER;
int columnSize = 50;
MockColumn column = new MockColumn(columnName, columnType, columnSize);
table.addColumn(column);

for (int i = 0; i < 20; i++) {
HashMap<MockColumn, Object> fields = new HashMap<MockColumn, Object>();
fields.put(column, i);
table.addRow(fields);
}

this.connection = connection;
}

@Test
public void testGatherStatistics() throws Exception {

DBMonitor monitor = new DBMonitor(connection);
monitor.gatherStatistics();
assertEquals(((MockConnection) connection).getNumberOfRows(tableName),
monitor.getNumberOfRows(tableName));
}

String tableName;
Connection connection;
}


Я надеюсь, что этот код достаточно ясен, чтобы понять мою идею (извините за синтаксические ошибки, я печатал вручную без моего дорогого Eclipse :P).



By кстати, я использую ORM частично, и мои необработанные SQL-запросы довольно просты и не должны отличаться от одной платформы к другой.

745   0  

Comments

    Ничего не найдено.