Метод @BeforeClass не запускается перед каждым классом - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть два класса, и каждый класс содержит 2 тестовых случая и класс Test1, имеющий один метод с @BeforeClass, по моему мнению, этот метод должен выполняться и до класса Test2, но он не выполняется.

    package WebPackage;

    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;

    public class Test1 {
        @BeforeClass
        public void test1() {

            System.out.println("printing Before Class Method");
        }
        @Test (priority = 1)
    public void test2() {

            System.out.println("printing test_2");
        }

        @Test (priority = 3)
    public void test3() {

            System.out.println("printing test_3");
        }
    }

Test2

    package WebPackage;

    import org.testng.annotations.Test;

    public class Test2 {

        @Test (priority = 1)
        public void test4() {

                System.out.println("printing test_4");
            }

            @Test (priority = 3)
        public void test5() {

                System.out.println("printing test_5");
            }
    }

XML-файл


    <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
    <suite name="Menu">
      <test name="WebPackage">
        <classes>
          <class name="WebPackage.Test1"/>
         <class name="WebPackage.Test2"/>
        </classes>
      </test> <!-- Test -->
    </suite> <!-- Suite -->

Консоль

[RemoteTestNG] detected TestNG version 7.0.0
printing Before Class Method
printing test_2
printing test_3
printing test_4
printing test_5

===============================================
Menu
Total tests run: 4, Passes: 4, Failures: 0, Skips: 0
===============================================

Ответы [ 3 ]

0 голосов
/ 07 ноября 2019

@BeforeClass будет запущен только один раз перед запуском любого метода, помеченного @Test в этом классе. Он не запустится снова ни для какого метода в вашем Test2 классе.

0 голосов
/ 07 ноября 2019

Вы можете создать класс BaseTest с аннотацией @BeforeClass, а затем расширить каждый класс теста с помощью BaseTest.

BaseTest:

public class BaseTest {
    @BeforeClass
    public void test1() {
        System.out.println("printing Before Class Method");
    }
}

Test1:

public class Test1 extends BaseTest {
    @Test (priority = 1)
    public void test2() {
        System.out.println("printing test_2");
    }

    @Test(priority = 3)
    public void test3() {
        System.out.println("printing test_3");
    }
}

Test2:

public class Test2 extends BaseTest {
    @Test(priority = 1)
    public void test4() {
        System.out.println("printing test_4");
    }

    @Test (priority = 3)
    public void test5() {
        System.out.println("printing test_5");
    }
}

Выход:

printing Before Class Method
printing test_2
printing test_3
printing Before Class Method
printing test_4
printing test_5
===============================================
Menu
Total tests run: 4, Passes: 4, Failures: 0, Skips: 0
===============================================
0 голосов
/ 07 ноября 2019

BeforeClass запускается только один раз, когда запускается тестовый класс. Следовательно. он выполняется только один раз для каждого тестового класса. Используйте @Before, если хотите выполнить его с каждым методом тестирования в классе тестирования.

Чтение ref - Разница между @Before, @BeforeClass, @BeforeEach и @ BeforeAll

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...