TestNG

时间:2018-06-12 07:41:11

标签: testng

两个注释都在testNG中的@test之前运行,然后两个注释之间有什么区别。

8 个答案:

答案 0 :(得分:7)

@BeforeTest:在测试方法之前,它会调用仅一次

@BeforeMethod 每次测试前都会调用 方法。

Reference O/P Example

答案 1 :(得分:7)

检查以下代码并输出

import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class Test_BeforeTestAndBeforeMethod {

    @BeforeTest
    public void beforeTest()
    {
        System.out.println("beforeTest");
    }

    @BeforeMethod
    public void beforeMethod()
    {
        System.out.println("\nbeforeMethod");
    }


    @Test
    public void firstTest()
    {
        System.out.println("firstTest");
    }

    @Test
    public void secondTest()
    {
        System.out.println("secondTest");
    }

    @Test
    public void thirdTest()
    {
        System.out.println("thirdTest");
    }
}

输出:

beforeTest

beforeMethod
firstTest

beforeMethod
secondTest

beforeMethod
thirdTest

答案 2 :(得分:1)

在TestNG中

@BeforeMethod - BeforeMethod在每个测试方法之前执行。所有使用@Test注释的方法。 @BeforeMethod适用于Java类中定义的测试。

@BeforeTest - BeforeTest仅在testng.xml文件中给出的标记之前执行。 @BeforeTest适用于testng.xml中定义的测试

参考: - https://examples.javacodegeeks.com/enterprise-java/testng/testng-beforetest-example/http://howtesting.blogspot.com/2012/12/difference-between-beforetest-and.html

答案 3 :(得分:1)

我知道这个问题已经有了好几个答案,我只是想在它们的基础上将注解可视化地绑定到testng.xml中的xml元素,并且还包括之前/之后的套件。
我试图使它尽可能地对新手友好,希望对您有所帮助。

我的Java示例基本上只是Ishita Shah代码的重新格式化版本。


BeforeAfterAnnotations.java (假设此文件位于名为“ test”的程序包中)

test.exe



testng.xml (testng.xml->以-> TestNG Suite运行)

package test;




import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;



public class BeforeAfterAnnotations
{
    @BeforeSuite
    public void beforeSuiteDemo()
    {
        System.out.println("\nThis is before a <suite> start tag.");
    }


    @BeforeTest
    public void beforeTestDemo()
    {
        System.out.println("\tThis is before a <test> start tag.");
    }


    @BeforeClass
    public void beforeClassDemo()
    {
        System.out.println("\t\tThis is before a <class> start tag.\n");
    }


    @BeforeMethod
    public void beforeMethodDemo()
    {
        System.out.println("\t\t\tThis is before a method that is annotated by @Test.");
    }


    @Test
    public void testADemo()
    {
        System.out.println("\t\t\t\tThis is the testADemo() method.");
    }


    @Test
    public void testBDemo()
    {
        System.out.println("\t\t\t\tThis is the testBDemo() method.");
    }


    @Test
    public void testCDemo()
    {
        System.out.println("\t\t\t\tThis is the testCDemo() method.");
    }


    @AfterMethod
    public void afterMethodDemo()
    {
        System.out.println("\t\t\tThis is after a method that is annotated by @Test.\n");
    }


    @AfterClass
    public void afterClassDemo()
    {
        System.out.println("\t\tThis is after a </class> end tag.");
    }


    @AfterTest
    public void afterTestDemo()
    {
        System.out.println("\tThis is after a </test> end tag.");
    }


    @AfterSuite
    public void afterSuiteDemo()
    {
        System.out.println("This is after a </suite> end tag.");
    }
}



输出到控制台

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

<suite name="Before/After Annotations Suite">
    <test name="Before/After Annotations Test">
        <classes>
            <class name="test.BeforeAfterAnnotations" />
        </classes>
    </test>
</suite> 

答案 4 :(得分:1)

@BeforeTest-在testng.xml中声明的每个测试之前运行

@BeforeMethod-在类中声明的每个测试方法之前并在@Test注释下运行

答案 5 :(得分:0)

如果运行集成测试,则在注入任何bean之前执行

@BeforeTest。与@BeforeMethod相比,它在bean注入之后执行。不确定为什么要这样设计。

答案 6 :(得分:0)

@BeforeTest仅在执行任何测试方法之前执行一次。方法将在执行testNG.xml文件中@Test标记中包含的任何<test>带注释的测试方法之前运行。 @BeforeMethod将在每个用@Test注释的方法之前执行。

答案 7 :(得分:0)

@BeforeTest 要在testng.xml文件的标记中包含的任何测试方法之前执行设置方法。 @BeforeMethod 在任何标注为@Test的测试方法之前执行设置方法。