programing

스프링 부츠 어플리케이션 OY 테스트

cafebook 2023. 2. 22. 23:12
반응형

스프링 부츠 어플리케이션 OY 테스트

Gradle을 통해 Spring Boot 어플리케이션을 테스트하기 위해 Oy를 사용하는 샘플 어플리케이션을 어디서 찾을 수 있는지 아는 사람 있나요?cmd 행에서 서버를 시작하여 IDE를 사용하여 테스트를 정상적으로 실행할 수 있지만 CI 서버에서 모든 테스트를 프로그래밍 방식으로 실행할 수 있어야 합니다.여기에서 답을 확인했지만, 이 솔루션은 나에게 효과가 없었습니다.아마도 여러 단계의 def 파일이 있기 때문일 것입니다.

여기 제 설정이 있습니다.

build.grade (다른 질문에서 언급)

testCompile ("org.springframework.boot:spring-boot-starter-test",
    ...
    "info.cukes:cucumber-spring:${cucumberVersion}")

OyTest.java

@RunWith(Cucumber.class)
@CucumberOptions(format = "pretty", features = "src/test/resources")
public class CucumberTest{
}

Abstract Spring Test.java(모든 Step Def 파일로 확장)

@SpringApplicationConfiguration(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@Ignore
public abstract class AbstractSpringTest
{ ... }

기동시에 올바르게 동작하고 있지 않다.1. 스텝 def 파일 및2 를 초기화하려고 하고 있기 때문이다.앱이 시작되지 않아 오이 테스트로 연결이 되지 않습니다.

감사해요.

편집: 그래들을 사용하여 응용 프로그램을 시작 및 중지하는 방법을 알려주시면 됩니다.

는 이 질문의 도움을 받아 문제를 해결했습니다.

다음은 답변이 있는 저장소입니다.https://github.com/jakehschwartz/spring-boot-cucumber-example

요약하면,AbstractSpringTest클래스에는 다음 주석이 필요합니다.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = DemoApplication.class, loader = SpringApplicationContextLoader.class)
@WebAppConfiguration
@IntegrationTest

저도 비슷한 증상이 있었는데, 제 오이가 봄의 맥락을 시작하지 않았어요.

알고 보니 다음 의존관계 중 하나가 누락되어 있었습니다.

build.gradle

testCompile "info.cukes:cucumber-junit:1.2.4"
testCompile "info.cukes:cucumber-java:1.2.4"
testCompile "info.cukes:cucumber-spring:1.2.4"

스텝 Defs.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
        loader = SpringApplicationContextLoader.class,
        classes = Application.class
)
@WebIntegrationTest(randomPort = true)
public class StepDefs {

    @Value("${local.server.port}")
    int port;

}

업데이트: Spring Boot 1.5.1

@ContextConfiguration(
        loader = SpringBootContextLoader.class,
        classes = Application.class
)

@jakehschwartz와 더불어 웹 앱을 임의의 사용 가능한 포트에서 시작하려면 Abstract Spring Test에서 다음을 수행해야 합니다.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class, loader = SpringApplicationContextLoader.class)
@WebIntegrationTest({"server.port=0"})
public abstract class AbstractSpringTest {

        @Value("${local.server.port}")
        protected int serverPort;
...}

스프링이 JUnit 매개 변수 테스트에 참여하도록 하기 위해 이런 일을 했습니다.오이도 같은 콘셉트여야 하는데 안 먹어봤어요.XML 설정을 사용하고 있었기 때문에, 차이가 있을지도 모릅니다.

스프링 포함 실행JUnit4

public abstract class RunWithSpringJUnit4 {

    private TestContextManager testContextManager;

    public RunWithSpringJUnit4() {
        try {
            this.testContextManager = new TestContextManager(getClass());
            this.testContextManager.prepareTestInstance(this);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

오이시험

@RunWith(Cucumber.class)
@CucumberOptions(format = "pretty", features = "src/test/resources")
public class CucumberTest extends RunWithSpringJUnit4 {
}

먼저 스프링 부트를 그래들로 적용했는지 확인해야 합니다.호출하다gradle build도망갈 수 있는 항아리를 만들 수 있습니다.봄학급을 메인으로 하는 것이 아니라, 실타래로 시작하고, 안정될 때까지 기다렸다가 오이를 운영하는 포장지를 가져라.

@RunWith(Cucumber.class)
public class LucasePsCucumberTest implements Runnable {
    public static void main(String[] args) {
        Thread t = new Thread(this);
        t.start();
        // wait for t
        cucumber.api.cli.Main(null);
     }
}

언급URL : https://stackoverflow.com/questions/30667729/cucumber-test-a-spring-boot-application

반응형