Выполнять тесты последовательно в TestNG - PullRequest
0 голосов
/ 18 мая 2018

У меня есть несколько тестовых классов, которые должны выполняться последовательно.Я создал testng.xml файл со следующим содержимым.

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="MyTestSuite1" verbose="2" parallel="methods" thread-count="1">
    <listeners>
        <listener class-name="utils.TestNGListener"></listener>
    </listeners>

    <test name="Regression" parallel="false" verbose="2">
        <classes>
            <class name="test.LoginTest" />
            <class name="test.ClearTest" />
            <class name="test.SendMessageTest" />
        </classes>
    </test>
</suite>

Я создал main() метод для проекта, чтобы обеспечить точку входа.

public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException {
    TestNG testNG = new TestNG();

    String xmlFileName = "testng.xml";
    List<XmlSuite> suite = (List<XmlSuite>)(new Parser(xmlFileName).parse());
    testNG.setXmlSuites(suite);

    testNG.run();
}

Я не уверен, как выполнить тестНабор в указанном порядке, получил сообщение об ошибке.

Исключение в потоке "main" org.testng.TestNGException: Не удается найти класс в classpath: test.LoginTest

Выводtree команда:

C:.
├───.idea
│   └───libraries
├───META-INF
├───out
│   └───artifacts
├───resources
│   └───leanftjar
├───RunResults
│   └───Resources
│       ├───Snapshots
│       └───User
├───src
│   ├───main
│   │   ├───java
│   │   │   ├───hu
│   │   │   │   └───mysoft
│   │   │   ├───jar
│   │   │   │   └───META-INF
│   │   │   ├───META-INF
│   │   │   ├───unittesting
│   │   │   └───utils
│   │   └───resources
│   └───test
│       └───java
│           └───test
├───target
│   ├───classes
│   │   ├───hu
│   │   │   └───mysoft
│   │   ├───leanftjar
│   │   ├───unittesting
│   │   └───utils
│   ├───generated-sources
│   │   └───annotations
│   ├───generated-test-sources
│   │   └───test-annotations
│   ├───maven-status
│   │   └───maven-compiler-plugin
│   │       └───compile
│   │           └───default-compile
│   └───test-classes
│       └───test
└───test-output
    ├───All Test Suite
    ├───junitreports
    └───old
        └───All Test Suite

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Если выполнить эти шаги по порядку сложно, чтобы ваш тест прошел, кажется, что они должны быть реализованы внутри теста.

@Test
public void doIt() {
   login();
   clearMessage();
   sendMessage();
}

При соответствующей проверке на успешностьпроваливается как единое целое, не скрывает действия от сопровождающих тестов и обеспечивает лучший результат отладки в случае сбоя теста, чем "три теста, соединенные вместе как один".

0 голосов
/ 23 мая 2018

Проблема в вашем коде.По умолчанию классы, которые находятся в src/main/java, не имеют видимости в классах, которые находятся в src/test/java.Поэтому, когда вы создаете экземпляр TestNG в методе main () из * 1003, * TestNG пытается загрузить классы из него и, поскольку он не может их найти, выдает исключение.

Чтобы решить эту проблему, переместите класс, содержащий ваш метод main (), в пакет под src/test/java и попробуйте снова.Это будет работать.

0 голосов
/ 21 мая 2018

Для выполнения тестов TestNG вы должны пометить метод теста как org.testng.annotations.Test класс

@Test
public void testMyMethod() {

Для использования testng.xml см. пример

// 1. To run with testng.xml file, uncomment this one, comment 2
testng.setTestSuites(Arrays.asList("testng.xml"));

Для выполнения с заказом на тестирование используйте setPreserveOrder:

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