tgoop.com/testerlib/3266
Last Update:
Testcontainers — это библиотека с открытым исходным кодом, позволяющая создавать временные, изолированные контейнеры для интеграционного тестирования.
Она поддерживает различные языки программирования, включая Java, .NET, Go, Node.js, Python и другие .
Библиотека позволяет запускать реальные экземпляры сервисов в контейнерах Docker непосредственно во время тестов, обеспечивая более достоверные результаты по сравнению с использованием моков или встроенных эмуляторов.
• Изоляция окружения: каждый тест запускается в своем собственном контейнере, что предотвращает конфликты и обеспечивает чистоту состояния.
• Гибкость: поддержка множества технологий, включая реляционные и NoSQL базы данных, системы кэширования, брокеры сообщений и другие сервисы .
• Автоматизация: контейнеры автоматически создаются перед запуском тестов и удаляются после их завершения, что упрощает настройку и управление тестовым окружением.
Допустим, вы хотите протестировать взаимодействие с PostgreSQL:
import org.testcontainers.containers.PostgreSQLContainer;
public class Demo {
public static void main(String[] args) {
try (PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:15")) {
postgres.start();
String url = postgres.getJdbcUrl();
String user = postgres.getUsername();
String password = postgres.getPassword();
System.out.println("Подключение: " + url);
// Тут можно подключиться к БД и выполнить тестовые запросы
// PostgreSQL остановится автоматически при выходе из try
}
}
}
В этом примере контейнер с PostgreSQL версии 15 поднимается перед выполнением теста и автоматически завершается после его завершения .
• При необходимости тестирования кода с реальными экземплярами сервисов, чтобы повысить достоверность и надежность тестов.
• Когда важно обеспечить одинаковые условия тестирования на разных машинах разработчиков и в системах непрерывной интеграции.
• Для упрощения процесса настройки и управления зависимостями в тестовом окружении.
#буст