1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chanjarster-spring-test-examples

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
chapter_4_rdbs.md 5.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 23:55 3b54fb2

Здесь и в примере 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 имеет много преимуществ:

  • Каждый файл SQL имеет указанный номер версии.
  • Flyway выполняет их по порядку номеров версий.
  • В период разработки вам нужно всего лишь поместить файлы SQL в каталог db/migration, и вам не нужно писать код, подобный EmbeddedDatabaseBuilder.addScript().
  • На основе этих трёх пунктов вы можете включить операторы SQL, соответствующие коду, в интеграционное тестирование, чтобы гарантировать правильность кода SQL.
  • Вы можете помочь очистить базу данных, что очень полезно при использовании баз данных, отличных от памяти, поскольку вам нужна чистая база данных как до, так и после тестирования.

Справочная документация В этом разделе рассматриваются инструменты Spring Testing Framework JDBC и SQL: [Transaction management] [Executing SQL scripts] и связанные с flyway: [flyway официальный документ] [flway и spring boot интеграция] Текст запроса написан на английском языке.

К сожалению, без контекста сложно понять, о чём идёт речь в запросе. Однако можно предположить, что это фрагмент технического документа, связанного с разработкой и тестированием программного обеспечения. В нём упоминаются различные файлы исходного кода и ресурсы проекта.

Возможно, это список файлов, которые используются для разработки и тестирования приложения. Файлы содержат исходный код на Java и SQL-скрипты для создания базы данных. Также упоминается фреймворк Spring, который используется для разработки приложений.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/chanjarster-spring-test-examples.git
git@api.gitlife.ru:oschina-mirror/chanjarster-spring-test-examples.git
oschina-mirror
chanjarster-spring-test-examples
chanjarster-spring-test-examples
master