2013-08-13 1 views
0

저는 바보 같은 질문을하는 경우 초보자입니다.@BeforeTest가 실패하지만 여전히 @Test 메서드가 실행됩니다.

"@BeforeTest"가 실패하면 "@Test"가 "@Factory"를 통해 실행됩니다. 이상적으로, "@BeforeTest"가 실패하면, 테스트는 건너 뛰어야하지만 여기서는 그렇지 않습니다. @Test가 실행 중입니다.

이 문제에 대해 알려주거나 내가 빠뜨린 부분을 알려주십시오.

하기 TestNG XML :

<test name="FactoryTest"> 
<parameter name="callSSO" value="com.acc.Test1.callSSO"/> 
<groups> 
    <run> 
    <include name="@[email protected]"/> 
    </run> 
</groups> 
<classes> 
    <class name="com.acc.FactoryTest"/> 
</classes> 
</test> 

TestNG의 등급 :

public class ADFSTest { 
    public ADFSTest(Object testData) { 
    this.testData = (ArrayList) testData; 
} 

@Factory 
public Object[] createTestInstances() { 
    Object[] testInstances = null; 
    try { 
     finalList = getTestData(); **<<<<---- GETS TEST INPUT FROM FILE (no complex stuff)** 
     testInstances = new Object[finalList.size()]; 
     for (int i = 0; i < finalList.size(); i++) 
      testInstances[i] = new ADFSTest(finalList.get(i)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return testInstances; 
} 

@BeforeTest(groups = { "group1" }) 
public void setUp() throws Exception { 
    boolean isADFSConfigComplete = false; 
    try { 
     System.out.println("*** IN SETUP ***"); 
     isADFSConfigComplete = adfsConfig.setUp(); **<<<<------- THROWS SOME EXPECTION IF SOME THINGS GOES WRONG** 
    } 
} catch (Exception e1) { 
    e1.printStackTrace(); 
} 

@AfterTest(groups = { "group1" }) 
public void cleanUp() throws Exception { 
    try { 
     System.out.println("*** IN CLEANUP ***"); 
    } 
} catch (Exception e) { 
    e.printStackTrace();* 
} 


@Parameters({ "com.acc.Test1.callSSO" }) 
@Test(groups = { "group1" }) 
public void callSSO(String testName1) throws Exception { 
    String testName = testData.get(0).toString(); 
    String initOp = testData.get(1).toString(); 
    String userState = testData.get(2).toString(); 
    String authScheme = testData.get(3).toString(); 
    String user = testData.get(4).toString(); 

    System.out.println("------------>> TestName is " + testName); 
    System.out.println("------------>> UserState is " + userState); 
    System.out.println("------------>> User is " + user); 
    if(user.equals("Fred") 
      assert true; 
    else 
     assert false; 
} 
} 

TestNG를 항아리가 사용되는 :는 TestNG를-5.10-jdk15.jar

예외가 잡힌 때문에

답변

0

, 모든 것이 잘 보인다 testNG 용. 그냥 다시 던지거나 붙잡지 말고 예상대로 작동해야합니다.

샘플 코드 :

@BeforeTest(groups = { "group1" }) 
public void setUp() throws Exception { 
    boolean isADFSConfigComplete = false; 
    System.out.println("*** IN SETUP ***"); // you should use logs.. 
    isADFSConfigComplete = adfsConfig.setUp(); 
} 
+0

고마워요 .. 그게 효과가 ... – Zeigeist

-1

사용이 코드 : 여기

@BeforeTest 
    public void setUpClass() throws RuntimeException 
    { 
     try 
     { 
      loadRequiredFile(); 
     } 
     catch (Exception e) 
     { 
      throw new RuntimeException("some error"); 
     } 
    } 

, loadRequiredFile는 예외가 발생합니다. 그러나 loadRequiredFile 함수에서 예외를 catch하지 말고 대신 setUpClass 메서드에서 예외를 catch합니다.

관련 문제