在运行组之前,不会执行TestNG @BeforeGroup

jam*_*123 6 java testng selenium

鉴于以下代码:

public class NewTest {

    private Object _foreground = null;

    @BeforeGroups("regression")
    public void setUp() {
        System.out.println("executed? setUp");
        _foreground = new MyObject();
    }

    @Test(groups="regression")
    public void testMyObjectToString() throws Exception {
        System.out.println("??? ");
        System.out.println(_foreground == null);
        String value = _foreground.toString();
        Assert.assertTrue(value != null);
    }
}
Run Code Online (Sandbox Code Playgroud)

和testNG.xml:

    <groups>
        <run>
            <include name="regression" />
        </run>
    </groups>

 <classes>
  <class name="com.automation.test.NewTest"/>
</classes>
Run Code Online (Sandbox Code Playgroud)

当我试图运行时,打印语句说:

??? 
true
Run Code Online (Sandbox Code Playgroud)

这意味着_foreground为null,这意味着不会执行setUp方法.TestNG还显示了行上的java.lang.NullPointerException:

String value = _foreground.toString();
Run Code Online (Sandbox Code Playgroud)

但是我不知道我错过了什么.在我看来,将运行"回归"组,并且带有@beforeGroup的setUp方法将在带有@Test的testMyObjectToString之前运行.显然这不是正在发生的事情..

jam*_*123 14

这是一个非常愚蠢的错误,可能是testNG的新手可能会...

@BeforeGroups("regression") 
Run Code Online (Sandbox Code Playgroud)

这是一个错误的用法..正确的用法应该是:

@BeforeGroups(groups = "regression")
Run Code Online (Sandbox Code Playgroud)

花了我两天!!