2017-11-02 1 views
1

이 시점에서 제목이 다소 혼란 스러울 수 있습니다. 잘하면 그것을 정리할 수 있습니다.기능 파일없이 오이 JVM @BeforeClass를 실행하십시오.

나는 우리의 시스템 테스트 케이스를 자동화하는 셀레늄 WebDriver와 오이 JVM을 실행하는거야

을 것을. 이 테스트 케이스는 현재 XRay Test Management 플러그인을 사용하여 JIRA에 저장됩니다. 또한 XRay는 결과 파일을 JIRA로 다시 업로드 할뿐만 아니라 기능 파일을 가져 오기위한 API를 제공합니다.

사용자 정의 JIRA 유틸리티 클래스를 생성하여 테스트를 피쳐 파일로 다운로드하고 JIRA와 테스트 결과를 업로드 할 수 있습니다. 이것들은 Cucumber Runner 클래스의 @BeforeClass와 @AfterClass에서 각각 실행됩니다.

또한 개발 된 테스트 프레임 워크가 내 컴퓨터에서 만들어진 기능 파일을 수동으로 실행하여 작동 함을 입증했습니다.

내가

원하는 무엇 나는 (결국) 우리의 CI 툴을 자동으로 자동화 테스트 프레임 워크를 실행할 수 있어야합니다. 이와 함께 JIRA에서 정의 된 자동화 테스트를 끌어와 테스트 결과를 다시 JIRA에 전달합니다.

코드와 함께 저장된 기능 파일을 원하지 않습니다. 제 의견으로는, 이것은 우리가 수행하는 테스트가 시간이 지남에 따라 (실행 된 횟수와 단계 자체에서) 바뀔 것이기 때문에 동적 인 목적을 상실합니다.

내가 프레임 워크의 모든 기능 파일없이 오이 러너 클래스를 실행하려고, 오이 "라고 (안될, 더 구체적으로 또는) 무슨 일이 일어나고 있는지

[SRC/테스트를 찾았 기능이 없습니다/resources/features /] "로 변경하십시오. 아직 기능 파일이 없기 때문에 이해할 수 있습니다.

그러나 @BeforeClass를 실행하지 않습니다. 따라서 실행될 지형지 물 파일을 다운로드하지 않습니다. 나는 러너 클래스에서 태그를 사용하거나 사용하지 않고 이것을 시도했다.

@RunWith(Cucumber.class) 
@CucumberOptions( 
     tags={"@smoketests"}, 
     features= {"src/test/resources/features/"}, 
     plugin={"json:target/reports/cucumber.json"}, 
     monochrome=true) 
public class RunCucumberTest { 

    @BeforeClass 
    public static void executeBeforeTests() { 
     JiraUtil.getFeatureFiles(); 

     //String browser = "firefox"; 
     String browser = "chrome"; 
     //String browser = "safari"; 
     //String browser = "edge"; 
     //String browser = "ie"; 
     DriverUtil.getInstance().setDriver(browser); 
    } 

    @AfterClass 
    public static void executeAfterTests() { 
     DriverUtil.getInstance().resetDriver(); 

     JiraUtil.uploadTestResults(); 
    } 
} 

나의 질문

으로 나는 JIRA 백분율 코드 그래서 기능 파일을 다운로드 할 수 있습니다를 실행할 수있는 방법 코드?

내가 원하는 것을 얻을 수 있습니까? 아니면 패배를 인정하고 코드와 함께 저장된 모든 기능 파일을 보유해야합니까?

답변

0

이것은 JUnit을 사용할 때 예상되는 동작입니다. 스위트에 테스트가 없거나 모든 테스트가 무시 된 경우 @BeforeClass, @AfterClass 또는 @ClassRule을 호출하지 않습니다. [1]. 이것은 naught에 대한 잠재적으로 값 비싼 설정의 실행을 피합니다.

이것은 클래스 규칙을 사용하여 테스트를 부트 스트랩 할 수 없음을 의미합니다. 그렇게하려고 시도해서도 안됩니다. 빌드 프로세스에서 컴파일하기 전에 모든 소스와 리소스를 가져 오는 것이 좋습니다.

maven을 사용하는 경우 대신 maven을 작성하여 generate-test-sources 단계 [2]에 첨부 할 수 있습니다. Maven 플러그인을 생성하는 것은 JUnit 규칙과 조금 더 관련이 있지만 너무 제한적이지는 않습니다. Guide to Developing Java Plugins을 확인하십시오.

나는 Gradle과 비슷한 옵션이 있다고 가정합니다.

+1

이것은 훨씬 효과적입니다! 동일한 작업을 수행하기 위해 두 개의 Maven 플러그인을 만들었고 필요에 따라 작동합니다. 많은 제안에 감사드립니다! –

관련 문제