こんにちは、2 つのテスト ケースを持つクラス ファイルを持つ単純なtestNGプロジェクトがあり、それに MyListener というリスナーを追加しました。SampleTest.java
このために、TestNG の TestListenerMyListener.java
を拡張するクラス ファイルがあり、テスト ケースの実行に応じて、合格または不合格またはスキップを出力しています。したがって、SampleTest を実行するたびに、コンソールに合格/不合格が表示されます。
私の問題は、MyListener クラスでテスト ケース ファイル名 (つまり、ここでは Sampletest) を取得するにはどうすればよいですか? ということです。私はスタックトレースを試しましたが、助けはありません..私が推測するように、それは呼び出されていませんが、ファイル内のテストケースに基づいて/聞いているだけです..リスナーでそのクラスの名前を取得する方法を教えてください????
SampleTest.java:
package com.abc;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@Listeners({ com.mindtree.MyListener.class})
public class SampleTest {
@Test
public void SampleTest() throws Exception{
System.out.println("Hello world");
}
@Test
public void SampleTest1() throws Exception{
System.out.println("Hello Swarna");
}
}
MyListener.java:
package com.abc;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
public class MyListener extends TestListenerAdapter {
private int m_count = 0;
@Override
public void onTestFailure(ITestResult tr) {
log("Fail");
}
@Override
public void onTestSkipped(ITestResult tr) {
log("Skipped");
}
@Override
public void onTestSuccess(ITestResult tr) {
log("\nSuccess\n");
## WANT TO PRINT HERE THE TESTCASE CLASS NAME
}
private void log(String string) {
System.out.print(string);
if (++m_count % 40 == 0) {
System.out.println("");
}
}
}
ただし、複数のテストケース ファイルでは機能しません。MyListener で SampleTest のオブジェクトを作成するだけで、getter と setter を介してクラス名にアクセスできます。