0

私は初心者なので、ばかげた質問をしていたら親切に許してください。

「@BeforeTest」が失敗したときに問題に直面し、「@Test」は「@Factory」を介して実行されます。理想的には、「@BeforeTest」が失敗した場合、テストをスキップする必要がありますが、ここではスキップせず、@Test が実行されています。

この問題を明らかにするか、何が欠けているか教えてください。

TestNG XML:

<test name="FactoryTest">
 <parameter name="callSSO" value="com.acc.Test1.callSSO"/>
 <groups>
  <run>
   <include name="@mode@"/>
  </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 jar: testng-5.10-jdk15.jar

4

2 に答える 2

-1

次のコードを使用します。

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

ここで、loadRequiredFile例外をスローします。ただし、loadRequiredFile関数で例外をキャッチするのではなく、setUpClassメソッドでキャッチします。

于 2016-09-02T08:40:43.810 に答える