
TDD(Test Driven Development)์ ๊ฐ๋ ๋ถํฐ Testcontainers๊ฐ ์ ๋ฑ์ฅํ๋์ง ๊ทธ๋ฆฌ๊ณ ํน์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์์ ๋ฐ์ํ๋ ์ค์ ๋ฌธ์ ์ ํด๊ฒฐ ์ ๋ต๊น์ง ์ ๋ฆฌํด๋ณธ๋ค.
TDD๋ ํ ์คํธ๋ฅผ ๋จผ์ ์์ฑํ๊ณ ๊ทธ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ฐ ๋ฐฉ์์ด๋ค.
๐ ์ด ์ง์ ์์ Testcontainers๊ฐ ๋ฑ์ฅํ๋ค.
๋ณดํต ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํ ์คํธ๋ฅผ ์์ฑํด์๋ค.
๐ ์ด์ ํ๊ฒฝ๊ณผ ํ ์คํธ ํ๊ฒฝ์ ๋ถ์ผ์น๊ฐ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ค.
Testcontainers๋ ํ ์คํธ ์ฝ๋์์ Docker ์ปจํ ์ด๋๋ฅผ ์ง์ ๋์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
testImplementation("org.testcontainers:junit-jupiter")
testImplementation("org.testcontainers:mariadb")
-------------
@Testcontainers
@ActiveProfiles("test")
public abstract class TestContainerConfig {
@Container
protected static final MariaDBContainer<?> mariaDBContainer = new MariaDBContainer<>("mariadb:latest")
.withDatabaseName(TestDBConfig.DB_NAME)
.withUsername(TestDBConfig.USERNAME)
.withPassword(TestDBConfig.PASSWORD);
@DynamicPropertySource
static void overrideProperties(DynamicPropertyRegistry registry) {
registry.add("spring.datasource.url", mariaDBContainer::getJdbcUrl);
registry.add("spring.datasource.username", mariaDBContainer::getUsername);
registry.add("spring.datasource.password", mariaDBContainer::getPassword);
}
}
Could not find a valid Docker environment. Please see logs and check configuration ๋ผ๋ ์ค๋ฅ๊ฐ ๊ฐ์๊ธฐ ์๋๋ค๊ฐ ๋ฐ์
Caused by: java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration
at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$7(DockerClientProviderStrategy.java:274)
at java.base/java.util.Optional.orElseThrow(Optional.java:403)
at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:265)
sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock
TDD๋ฅผ ๋์ ํ๋ค๊ฐ ํฌ๊ธฐํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ํ๊ฒฝ๊ณผ ์ธ๋ถ ์์กด์ฑ์ด๋ค. Testcontainers๋ ์ด ๋ฌธ์ ๋ฅผ ๊ฑฐ์ ์๋ฒฝํ๊ฒ ํด๊ฒฐํด ์ฃผ์ง๋ง
๋์ ๋ฒ์ ๊ด๋ฆฌ๋ผ๋ ์๋ก์ด ์ฑ ์์ ์๊ตฌํ๋ค. ์ ํต์ ๋ Testcontainers ํ๊ฒฝ์ ํ ์คํธ๋ฅผ ๋ฏฟ์ ์ ์๊ฒ ๋ง๋๋ ๋ง์ง๋ง ํผ์ฆ์ด๋ผ๊ณ ์๊ฐํ๋ค.