Чего мы пытаемся достичь?
Сценарий базы данных, который удобен для тестирования и может быть легко настроен до и после каждого теста.
Как я этого достиг
Я использовал встроенную базу данных H2 в тестовой области, с настройкой базы данных через скрипт SQL перед каждым тестовым примером.
Сначала добавьте H2 в зависимости от области теста в pom.xml.(вы используете Maven, верно?).
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
Затем настройте класс тестов JUnit.
SampleTestClass.java
@SpringBootTest // Allows you to autowire beans on your test class
@AutoConfigureTestDatabase // Configures a database on test scope instead of your regular database config.
@RunWith(SpringRunner.class) // Runs test context with SpringRunner.class
@SqlGroup({ // Setups .sql files to be run on specific triggers. In this case, before each test method the script will be ran.
@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:beforeTest.sql"),
})
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) // The spring application context will be considered "dirty" before each test method, and will be rebuilt. It means that
// your autowired beans will not carry any data between test cases.
public class SampleTestClass {
// write your test cases here...
}
На вашем пути к классам теста добавьте файл
beforeTest.sql , который будет запускаться перед каждым методом теста.Этот файл может включать создание таблицы и вставку некоторых данных для работы с вами.Если вам нужно дополнительное взаимодействие с базой данных, у вас всегда может быть метод, помеченный
@Before
в вашем тестовом классе.Этот метод будет запускаться перед каждым тестом.