Как обрабатывать БД внутри вашего скрипта с помощью платформы TestNG? Как удалить БД перед каждым запуском тестового скрипта? Как загрузить sql файл в чистую БД до запуска тестового скрипта?
Цель: каждый тестовый пример должен быть независимым. Рамка: TestNG Язык: Java
Каждый тестовый пример должен быть независимым от других тестовых случаев. Цель состоит в том, чтобы запускать тестовые случаи случайным образом, никаких заказов не требуется.
Раньше я использовал фреймворк PHPUnit, где каждый тестовый пример был независимым.
Перед запуском каждого тестового скрипта я бы:
Я использовал это внутри сценария оболочки, и я бы назвал сценарий оболочки через командную строку:
mysql -u $ DB_USER -p $ DB_PWD -h $ HOST -e "DROP DATABASE $ DB_NAME"
mysql -u $ DB_USER -p $ DB_PWD -h $ HOST -e "CREATE DATABASE $ DB_NAME"
mysql -u $ DB_USER -p $ DB_PWD -h $ HOST $ DB_NAME <sql/dbinit.sql
Google-ing не помог, поэтому я размещаю здесь вопрос. Мне понадобилось бы что-то подобное для TestNG, но я не нашел ничего подобного.
Может ли кто-нибудь дать совет коллеге. Как вы обрабатываете базу данных оракула, как вы удаляете данные из БД и загружаете их внутри своего тестового сценария?
Любые советы, книги, учебники были бы очень полезными.
Вы должны изучить DbUnit. Я недавно начал использовать его сам (я являюсь пользователем TestNG), и на данный момент я не сталкивался с сценариями, в которых вам абсолютно необходим JUnit. Вы можете восстановить базу данных между тестами, заполнить ее, экспортировать и т.д.
http://dbunit.sourceforge.net/
базовый пример:
private DatabaseHelper dbh;
private EntityManager em;
private IDatabaseConnection connection;
private IDataSet dataset;
@BeforeClass
private void setupDatabaseResource() throws Exception {
// using JPA and a custom helper class
em = dbh.getEntityManager();
connection = new DatabaseConnection(((SessionImpl) (em.getDelegate())).connection());
connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqldbDataTypeFactory());
// full database export
IDataSet fullDataSet = connection.createDataSet();
FlatXmlDataSet.write(fullDataSet, new FileOutputStream("target/generated-sources/test-dataset.xml"));
FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder();
flatXmlDataSetBuilder.setColumnSensing(true);
// keep the dataset in memory, for later restore points
dataset = flatXmlDataSetBuilder.build(new FileInputStream("target/generated-sources/test-dataset.xml"));
}
edit: пример, где @BeforeMethod
восстанавливает вашу базу данных между тестами
@BeforeMethod
public void cleanDB() throws Exception {
DatabaseOperation.CLEAN_INSERT.execute(connection, dataset);
}