@BeforeSuite不工作

时间:2016-05-31 06:22:02

标签: java testng

我试过这个: 的 BaseClass的

package pages;

import org.testng.annotations.BeforeSuite;

public class BaseClass {

    @BeforeSuite
    public static void setup() {
        System.out.println("in set up method");
    }

}

识别TestClass

 package pages;

 import org.testng.annotations.Test;

 public class TestClass extends BaseClass {

@Test(groups = { "group1" })

public void grpOnetest() {
    System.out.println("Method grp one");

}

@Test(groups = { "group2" })

public void grpTwotest() {
    System.out.println("Method grp two");

}

@Test(groups = { "group3" })

public void grpThreetest() {
    System.out.println("method grp three");

}
}

的testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">

    <test name="Test">
        <groups>
            <run>
                <include name="group1" />
            </run>
        </groups>
        <classes>
            <class name="pages.TestClass" />
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->

它不会给出任何错误,只是不打印: “在设置方法中”即不运行@BeforeSuite

2 个答案:

答案 0 :(得分:4)

alwaysRun = true上需要@BeforeSuite

来自the documentation

  

对于before方法(beforeSuite,beforeTest,beforeTestClass和beforeTestMethod,但不是beforeGroups):如果设置为true,则无论它属于哪个组,都将运行此配置方法。

换句话说,如果您运行具有特定组的套件,配置方法必须具有预期的组或alwaysRun,它将使用每个goups激活该方法。

答案 1 :(得分:1)

您需要将setup方法放在您所包含的组中,否则它将无法运行,因为该方法不属于该组。

将套件添加到应该工作的所有组中。