임베디드 야생 플라이에서 아킬라안 테스트를 실행했습니다. 모든 이주 스크립트, Integrator 클래스 (FlyWay가 설정된 경우) 및 모든 플라이 웨이 패키지 (POM 파일의 경우)가 .war 파일 (포함 된 wildfly에 배치 됨)에 shrinkwrap에 포함되어 있어도 마이그레이션이 수행되지 않습니다.arquillian and flyway : 마이그레이션이 실행되지 않습니다.
어떤 이유가 있습니까? 이 방법은 기본적으로 작동하지 않습니까, 아니면 뭔가 빠졌습니까?
내가 좋아하는 것은 arquillian에 의해 실행되는 자동 테스트가 동일한 마이그레이션 스크립트를 사용하는 생산 데이터베이스와 동일한 구성표를 갖는 메모리 데이터베이스에 설정된다는 것입니다.
편집 : ytg 아래와 같이 묻습니다. Integrator 클래스를 추가합니다. 그러나이 코드는 arquillian 테스트에 입력되지 않습니다. 만약 내가 integrate 메소드 위에 breakpoint를 설정한다면, 결코 적중되지 않을 것이다. 왜?
import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.MigrationInfo;
import org.hibernate.cfg.Configuration;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.integrator.spi.Integrator;
import org.hibernate.metamodel.source.MetadataImplementor;
import org.hibernate.service.spi.SessionFactoryServiceRegistry;
public class FlywayIntegrator implements Integrator
{
@Override
public void integrate(final Configuration configuration,
final SessionFactoryImplementor sessionFactoryImplementor,
final SessionFactoryServiceRegistry sessionFactoryServiceRegistry)
{
System.out.println("Starting Flyway database migrations");
Flyway flywayEvending = new Flyway();
// enable this to migrate from the state currently on useqrnow.com
flywayEvending.setBaselineVersionAsString("0");
flywayEvending.setBaselineOnMigrate(true);
flywayEvending.setDataSource(...)
flywayEvending.setLocations(...);
for (MigrationInfo i : flywayEvending.info().all())
{
System.out.println("migrate task: " + i.getVersion() + " : " + i.getDescription() + " from file: " + i.getScript());
}
flywayEvending.migrate();
}
@Override
public void integrate(final MetadataImplementor metadataImplementor, final SessionFactoryImplementor sessionFactoryImplementor, final SessionFactoryServiceRegistry sessionFactoryServiceRegistry)
{
// do nothing
}
@Override
public void disintegrate(final SessionFactoryImplementor sessionFactoryImplementor, final SessionFactoryServiceRegistry sessionFactoryServiceRegistry)
{
// do nothing
}
}
Integrator 클래스의 설치 코드를 포함하십시오. – ytg
이 코드를 입력하지 않아도 알았습니다. 브레이크 포인트를 설정하면 arquillian 테스트를 실행하는 동안 적중하지 않습니다. – badera
WildFly와 같은 애플리케이션 컨테이너에 대해 테스트하면 디버그 모드에서 실행하고 원격 디버거를 연결해야합니다. 그렇지 않으면 JVM에 사용할 수있는 디버그 만 있습니다. 테스트를 실행합니다 (동일한 것은 아닙니다). –