2017-11-30 13 views
3

일부 셀렌 코드를 실행하는 testNG 제품군이 있습니다. 내가 가진 webapp에서 페이지 사이의 탐색을 테스트하고 있습니다. 사용자 유형에 따라 제한된 페이지에 액세스 할 수있는 네 가지 사용자 수준이 있습니다. 또한 Chrome과 IE에서이를 테스트해야합니다.왜 @BeforeTest 메소드가 이전 테스트의 마지막 요소로보고되는 이유는 무엇입니까?

내 testng.xml 설정에 대해 Mkyong.com tutorial을 따라갔습니다.

단일 testng.xml에서 모든 사용자와 두 브라우저에 대한 모든 탐색 테스트를 수집하도록 선택했습니다. 총 8 개의 테스트 클래스를 제공하며, 여기서 4와 4는 테스트가 실행되기 전에 동일한 구성 클래스가 실행됩니다.

testng.xml :

나는이 테스트를 실행하면 이제
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Releaseboard Local tests" parallel="none"> 


    <test name="user1 chrome"> 
     <classes> 
      <class name="testsuite.ChromeConfig" /> 
      <class name="testcase.User1NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user2 chrome"> 
     <classes> 
      <class name="testsuite.ChromeConfig" /> 
      <class name="testcase.User2NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user3 chrome"> 
     <classes> 
      <class name="testsuite.ChromeConfig" /> 
      <class name="testcase.User3NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user4 chrome"> 
     <classes> 
      <class name="testsuite.ChromeConfig" /> 
      <class name="testcase.User4NavigationTests" /> 
     </classes> 
    </test> 


    <test name="user1 ie"> 
     <classes> 
      <class name="testsuite.IeConfig" /> 
      <class name="testcase.User1NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user2 ie"> 
     <classes> 
      <class name="testsuite.IeConfig" /> 
      <class name="testcase.User2NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user3 ie"> 
     <classes> 
      <class name="testsuite.IeConfig" /> 
      <class name="testcase.User3NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user4 ie"> 
     <classes> 
      <class name="testsuite.IeConfig" /> 
      <class name="testcase.User4NavigationTests" /> 
     </classes> 
    </test> 
</suite> 

, 내가 기대하는 모든 8 테스트 클래스에 대해이 출력 : 그들은 빨간색 경우

enter image description here

그것은 중요하지 않습니다 또는 녹색이지만, XML의 모든 테스트 태그가 두 단계 위로 시작하고 항상 동일한 수준으로 시작될 것으로 기대합니다. 표시된 세 개 이상의 레벨도 있지만이 시점에서는 중요하지 않습니다.

하지만 출력은 다음 레벨 2가 이전 레벨 1 내부에 나타날 때가 있습니다. 그러면 @BeforeTest 주석이 달린 메소드가 실패합니다. 그것은 이전 테스트에서 실패한 후에도 레벨 1에서 실제로 테스트를 실행하기 때문에 그다지 나쁘지 않을 것입니다. 그러나 이전에 테스트가 표시되면 레벨 1에서도 @BeforeTest가 항상 실패하고 모든 레벨 3 테스트 메소드는 자동으로 건너 뜁니다. 아래 이미지 참조 :

enter image description here

끝에 시간이 라인의 모든

이 스크린 샷에서 실제 라인입니다. 나머지는 익명 성을 위해 편집되었습니다.

어떻게하면 @BeforeTest 및 @AfterTest 메서드, setup 및 tearDown이 어떤 이유로 테스트로 나열되는지 확인하십시오. 두 가지 모두 실제 테스트 방법이없는 잘못된 테스트 내부와 다음 내부에서는 갑자기 실제 테스트 방법을 사용합니다. 이러한 오류는 매번 무작위로 나타납니다. 항상 다음 시험을 포함하는 구체적인 시험은 없습니다. 때로는 세 가지가 있으며 때로는 하나만 있습니다. 일관성있는 유일한 것은 결코 연속적으로 두 가지가 없다는 것입니다. 나는 정말로 여기서 무슨 일이 벌어지고 있는지 이해하지 못한다. 더 잘 설명하고 싶거나 더 많은 연구를하고 싶지만이 문제를 검색 가능한 용어로 끓이는 데 정말 힘든 시간을 보내고 있습니다. 현상금이 나올 때까지 답이 없을 수도 있다는 느낌이 들어요.

누구나 볼 수있는 다른 코드 예제를 게시 하겠지만, 지금은 어디서부터 시작해야할지 모르겠다.

답변

1

내 질문에 대한 대답처럼 보입니다. @BeforeTest 주석이 달린 메소드가 실패 할 때 일어나는 현상입니다. 즉, 이전 테스트 계층 구조 내에서 설정 및 해체가 표시된다는 사실은 testNG 측에서는 사소한보고 오류 일 가능성이 높습니다. 어떤 오류의 원인도 아닙니다. 오류의 원인과 건너 뛴 테스트는 필자의 경우 불안정한 설치 방법의 결과입니다. 가끔씩, 때로는 제대로 작동하지 않는다는 사실은 내 페이지의 민감한 작은 조건부 요소 때문이었습니다.이 요소는 때로는 발견되거나로드되었지만 때로는 그렇지 않았습니다.

+0

이것이 내 생각에 실제 문제가 아닌 표현의 문제 일 수 있습니다. –