繁体   English   中英

IAnnotation 转换方法不会禁用 testng 中的测试

[英]IAnnotation transform method is not disabling the test in testng

这里我的意图是,根据之前的方法条件, @Test方法需要启用或禁用但是在下面的代码中,即使我通过了测试用例名称,它也没有被跳过? 谁能建议我解决方案?

我需要BeforeTestMethod来检查我的实际代码中的一些逻辑,并基于此我必须在 class 文件中启用@Test

public class ListnerClass implements IAnnotationTransformer {
public static String  testName;
public void transform(ITestAnnotation iTest, Class testClass, Constructor testConstructor, Method method) {
    if(method.getName().equalsIgnoreCase(testName)) {
        iTest.setEnabled(false);
    }
    
}

public class TestNGTest3 {
@BeforeMethod
public void setUp(Method result) {
    System.out.println("This is the before Method getting name "+result.getName());
    if(result.getName().contains("3")) 
       {
        ListnerClass.testName=result.getName();

    }
}

@Test
public void testMethod3() {
    System.out.println("This is the Method of Method");
}

@Test
public void testMethod4() {

    System.out.println("Hi");
}


    
}

TestNG.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name=" Regression Suite">
    <listeners>
    <listener class-name="com.listners.ListnerClass" />
    </listeners>
    <test thread-count="1" name="Test">
    <classes>
        <class name="com.test.TestNGTest3" />
    </classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

Output:

This is the before Method getting name testMethod3
This is the Method of Method
This is the before Method getting name testMethod4
Hi

最后,我在下面的帖子的帮助下实现了我的意图。

为什么 throw new SkipException() 会跳过我的所有方法?

这是一个工作示例:

 public class TestClassTest {
 static String name;
 static int i=0;
`public static String testmethod() {        
    List<String> list= new ArrayList<String>();
    list.add("Raja");
    list.add("Raju");
    list.add("Raj");
    name=list.get(i);
    i++;
    return name;
    
    
}


 public class DependsOnMethodClass extends TestClassTest {

@BeforeMethod()
public void beforecaller(Method m) {    
if(!testmethod().equals("Raju")) {
    System.out.println("This is the method going to be skipped
"+m.getName());
    throw new SkipException("Data provided is not matching");


}
else {
    System.out.println("This is the method not skipped"+m.getName());
}

}

@Test
public void getCall() {
System.out.println("This is the getCall method");

}

@Test()
public void getCall1() {
System.out.println("This is the getCall1 method");
}
}

TestNG xml 的更新:(重要更改)添加参数 configfailurepolicy="continue" 将继续测试,即使我们抛出跳过异常。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" configfailurepolicy="continue">
<test thread-count="5" name="Test">
<classes>
  <class name="com.testng.newsuite.DependsOnMethodClass"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

Output:
This is the method going to be skipped getCall
This is the method not skipped getCall1
This is the getCall1 method

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM