Я работаю с одним унаследованным проектом и решил переключить конвейер CI с maven 3.6.0 на 3.6.3 Теперь, к сожалению, некоторые тесты начинают давать сбои. Ничего в кодовой базе не изменилось вообще. Но я получаю ошибки о неверном имени базы данных (derby). Я пытался запустить код как отдельное приложение, и оно хорошо компилируется и выполняется. вот код
/**
* @param testCase
* @param databaseType
* @return
*/
@Override
public Connection createDatabase(Class<?> testCase)
{
try
{
File testDir = new File(TARGET_TESTDB);
testDir.mkdirs();
File testdb = new File(testDir, testCase.getName());
if (testdb.exists())
deleteDirectory(testdb);
Class.forName(DERBY_DRIVER);
String url = "jdbc:derby:" + testdb + ";create=true";
log.debug("Creating test database {}", url);
Connection con = DriverManager.getConnection(url); //ERROR IS HERE
con.setAutoCommit(false);
return con;
}
catch (Exception e)
{
throw new RuntimeException("Caught exception creating database for test case "
+ testCase.getName(), e);
}
}
и вот трассировка стека
Test set: com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.086 sec <<< FAILURE!
com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest Time elapsed: 62.242 sec <<< ERROR!
java.lang.RuntimeException: Caught exception creating database for test case com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest
at com.navteq.phoenix.test.util.impl.DatabaseTestUtilDerby.createDatabase(DatabaseTestUtilDerby.java:88)
at com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest.runBeforeClass(DdlColumnFilterTest.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:123)
at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:85)
at org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.run(HeadlessTestApplication.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Caused by: java.sql.SQLException: invalid database address: jdbc:derby:target/testdb/com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest;create=true
at org.sqlite.JDBC.createConnection(JDBC.java:74)
at org.sqlite.JDBC.connect(JDBC.java:64)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at com.xxxxxx.yyyyy.test.util.impl.DatabaseTestUtilDerby.createDatabase(DatabaseTestUtilDerby.java:82)
Как это исправить или я должен вернуться к maven 3.6.0?