Здесь и в примере 1 разница в том, что мы предоставили Bean типа PlatformTransactionManager, это потому, что он нужен в тестовом коде ниже AbstractTransactionalTestNGSpringContextTests.
Spring_2_IT.java:
@ContextConfiguration(classes = Spring_2_IT_Configuration.class)
public class Spring_2_IT extends AbstractTransactionalTestNGSpringContextTests {
@Autowired
private FooRepository fooRepository;
@Test
public void testSave() {
Foo foo = new Foo();
foo.setName("Bob");
fooRepository.save(foo);
assertEquals(countRowsInTable("FOO"), 1);
countRowsInTableWhere("FOO", "name = 'Bob'");
}
@Test(dependsOnMethods = "testSave")
public void testDelete() {
assertEquals(countRowsInTable("FOO"), 0);
Foo foo = new Foo();
foo.setName("Bob");
fooRepository.save(foo);
fooRepository.delete(foo.getName());
assertEquals(countRowsInTable("FOO"), 0);
}
}
Здесь мы используем countRowsInTable("FOO") для проверки результатов базы данных, этот метод является прокси JdbcTestUtils для AbstractTransactionalTestNGSpringContextTests. Также следует отметить, что каждый тестовый метод автоматически откатывается после выполнения, поэтому в первой строке testDelete мы assertEquals(countRowsInTable("FOO"), 0), это отличается от примера 1.
Для получения дополнительной информации о Spring Testing Framework и транзакциях см. официальную документацию Spring [Transaction management].
Пример 3: Использование Spring Boot Boot_1_IT.java:
@SpringBootTest
@SpringBootApplication(scanBasePackageClasses = FooRepository.class)
public class Boot_1_IT extends AbstractTransactionalTestNGSpringContextTests {
@Autowired
private FooRepository fooRepository;
@Test
public void testSave() {
Foo foo = new Foo();
foo.setName("Bob");
fooRepository.save(foo);
assertEquals(countRowsInTable("FOO"), 1);
countRowsInTableWhere("FOО", "name = 'Bob'");
}
@Test(dependsOnMethods = "testSave")
public void testDelete() {
assertEquals(countRowsInTable("FOO"), 0);
Foo foo = new Foo();
foo.setName("Bob");
fooRepository.save(foo);
fooRepository.delete(foo.getName());
assertEquals(countRowsInTable("FOO"), 0);
}
@AfterTest
public void cleanDb() {
flyway.clean();
}
}
Поскольку мы использовали Spring Boot для интеграционного тестирования, благодаря его механизму AutoConfiguration нам не нужно создавать Beans DataSource, JdbcTemplate и PlatformTransactionManager. И поскольку мы уже добавили flyway-core в зависимости maven, Spring Boot будет использовать flyway для инициализации базы данных. Нам нужно только поместить файлы SQL в каталог db/migration в пути к классам: V1.0.0__foo-ddl.sql:
CREATE TABLE FOO (
name VARCHAR2(100)
);
Кроме того, в конце теста мы очистили базу данных с помощью flyway:
@AfterTest
public void cleanDb() {
flyway.clean();
}
Использование flyway имеет много преимуществ:
Справочная документация В этом разделе рассматриваются инструменты Spring Testing Framework JDBC и SQL: [Transaction management] [Executing SQL scripts] и связанные с flyway: [flyway официальный документ] [flway и spring boot интеграция] Текст запроса написан на английском языке.
К сожалению, без контекста сложно понять, о чём идёт речь в запросе. Однако можно предположить, что это фрагмент технического документа, связанного с разработкой и тестированием программного обеспечения. В нём упоминаются различные файлы исходного кода и ресурсы проекта.
Возможно, это список файлов, которые используются для разработки и тестирования приложения. Файлы содержат исходный код на Java и SQL-скрипты для создания базы данных. Также упоминается фреймворк Spring, который используется для разработки приложений.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )