我尝试使用测试容器库与Oracle集成测试。下面是一个简单的测试:
public class SimpleTest {
@Rule
public OracleContainer oracle = new OracleContainer();
@Test
public void simpleTest() throws SQLException {
HikariDataSource ds = buildHikariDataSource();
Statement statement = ds.getConnection().createStatement();
statement.execute("SELECT 1 FROM dual");
ResultSet resultSet = statement.getResultSet();
resultSet.next();
int resultSetInt = resultSet.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
private HikariDataSource buildHikariDataSource() {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl(oracle.getJdbcUrl());
hikariConfig.setUsername(oracle.getUsername());
hikariConfig.setPassword(oracle.getPassword());
return new HikariDataSource(hikariConfig);
}
}
But it fails with TimeoutException:
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:256)
at org.testcontainers.containers.GenericContainer.lambda$start$0(GenericContainer.java:184)
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:76)
... 18 more
Caused by: org.rnorth.ducttape.TimeoutException: org.rnorth.ducttape.TimeoutException: java.util.concurrent.TimeoutException
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:53)
at org.testcontainers.containers.JdbcDatabaseContainer.waitUntilContainerStarted(JdbcDatabaseContainer.java:81)
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:235)
... 20 more我的Docker安装适合测试容器-甲骨文-xe和os是macOS塞拉利昂10.12.6。
如何解决这个问题呢?
P.S. 全控制台输出
发布于 2017-11-09 21:13:04
总之,我在测试容器中创建了一个问题 --java-模块-oracle-xe存储库。
解决办法是在系统首选项中将位置改为美国,将语言改为英语。
测试容器工程师的回答是:
我的同事也面临着同样的问题。我们已经调试并理解了甲骨文TNS (ORA-12514)的问题。为了解决这一问题,需要将语言改为英语,将地理位置改为美国。
https://stackoverflow.com/questions/47115371
复制相似问题