其中一个@Test代码块没有执行

时间:2017-01-04 13:16:43

标签: selenium-webdriver testng

The TocheckApproval() code block doesnot get executed 有人可以建议为什么会发生这种情况以及我需要采取哪些步骤才能执行@Test块

2 个答案:

答案 0 :(得分:1)

我不确定TestNG框架是否保证了方法顺序。

如果您希望方法顺序仅在某些测试运行后运行测试(并标记为PASS),则可以使用dependsOnMethodsdependsOnGroups

例如:

import org.junit.FixMethodOrder;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.asserts.Assertion;

public class TestExample {

    @BeforeTest
    public void beforetest(){
        System.out.println("before test ");
    }

    @Test
    public void Tocheckapproval() {
        System.out.println("in the method: Tocheckapproval");
    }

    @Test(dependsOnMethods = {"Tocheckapproval"})
    public void TocheckRequestDecline() {
        System.out.println("in the method: TocheckRequestDecline");
    }


    @AfterTest
    public void aftertest() {
        System.out.println("after test");

    }

}

如果你想定义你选择的方法顺序而且测试不应该依赖于其他测试,那么你可以使用dependecyOn*代替method Interceptors(方法,组)。

method Interceptors提供将作为参数之一运行的测试方法列表,然后您可以根据需要重新安排。

参考文献:

  1. http://testng.org/doc/documentation-main.html#methodinterceptors
  2. http://beust.com/weblog/2008/03/29/test-method-priorities-in-testng/

答案 1 :(得分:1)

您还没有设置任何测试优先级,这就是原因! 这很容易做到,只需将优先级放在@Test标记旁边。

@Test (priority=1)
public void ToTestApproval(){
//do some stuff
}

@Test (priority=2)
public void ToCheckRequestDecline(){
//do some more stuff
}

正如上面提到的Naveen,您可以使用dependsOnMethods和dependsOnGroups进一步细化所需的行为。

PS。如果这不起作用,那么它可以归结为@Test标签本身。请仔细检查您是否使用了TestNG注释而不是Junit!

祝你好运!