私が行っている研究では、@ AfterMethodからテストメソッド(@Test)を実行した後、結果ステータス(Passed/Failed)をキャプチャする必要があります。
Import org.testng.ITestResultを使用しています。いくつかのオンラインブログに行った後、作業を簡単にするための研究の成果として、常に結果が渡されるので、期待どおりに成功しなかったようですアサーションが失敗したとしても 。
私のコードは次のとおりです:
public class SampleTestForTestProject {
ITestResult result;
@Test(priority = 1)
public void testcase(){
// intentionally failing the assertion to make the test method fail
boolean actual = true;
boolean expected = false;
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void afterMethod() {
result = Reporter.getCurrentTestResult();
switch (result.getStatus()) {
case ITestResult.SUCCESS:
System.out.println("======PASS=====");
// my expected functionality here when passed
break;
case ITestResult.FAILURE:
System.out.println("======FAIL=====");
// my expected functionality here when passed
break;
case ITestResult.SKIP:
System.out.println("======SKIP BLOCKED=====");
// my expected functionality here when passed
break;
default:
throw new RuntimeException("Invalid status");
}
}
}
コンソールの結果:
[TestNG] Running: C:\Users\USER\AppData\Local\Temp\testng-Eclipse--988445809\testng-customsuite.xml
======PASS=====
FAILED: testcaseFail
Java.lang.AssertionError: expected [false] but found [true]
上記のコードスニペットに示すように、テスト結果を変数に渡してスイッチを通過させ、テストメソッドが失敗したときに「====== FAIL =====」と出力されることを期待しています。
各テストメソッド(@Test)の実行テスト結果をキャッチするために、誰かが親切に私を助けることができますか?私がアプローチした方法が間違っている場合、親切に正しいアプローチへのコードスニペットで私を助けてください。
前もって感謝します
早くやれよ:
public class stacktest {
@Test
public void teststackquestion() {
boolean actual = true;
boolean expected = false;
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void afterMethod(ITestResult result)
{
try
{
if(result.getStatus() == ITestResult.SUCCESS)
{
//Do something here
System.out.println("passed **********");
}
else if(result.getStatus() == ITestResult.FAILURE)
{
//Do something here
System.out.println("Failed ***********");
}
else if(result.getStatus() == ITestResult.SKIP ){
System.out.println("Skiped***********");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
TestListenerAdapter
には、これらの状況(成功、スキップ、失敗)ごとにメソッドがあります。私の提案は、このような独自のリスナーを作成することです。
public class MyTestResultListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult result) {
// do what you want to do
}
@Override
public void onTestSuccess(ITestResult result) {
// do what you want to do
}
@Override
public void onTestSkipped(ITestResult result) {
// do what you want to do
}
}
次に、リスナーをテストクラスに追加します。
@Listeners(MyTestResultListener.class)
public class MyTest {
// your tests
}