Как запустить тестовый набор junit несколько раз с другой конфигурацией WebDriver - PullRequest
0 голосов
/ 02 апреля 2019

Я использую junit для запуска теста на веб-сайте с Selenium webdriver. То, чего я пытаюсь добиться, - это запускать один и тот же тестовый класс несколько раз, но каждый раз, когда я хочу изменить свои учетные данные для входа на веб-сайт, чтобы он мог быть протестирован с различными разрешениями доступа. Я не знаю, как решить эту проблему.

Я использую класс TestSuite, чтобы указать, какие тестовые классы должны быть запущены, а WebDriver инициализируется в классе TestRunner

testSuite класс:

@RunWith(Suite.class)

@Suite.SuiteClasses({
        DhcpReservationTest.class,
})

public class TestSuite {
}

Класс TestRunner:

public class TestRunner {
    /**
     * Init web driver
     */
    private static WebDriver driver = DriverManager.createDriver(ProjectSettings.Roles.NETADMIN);

    /**
     * This static method serves for getting instance of web driver for executing tests.
     * @return web driver
     */
    public static WebDriver getWebDriver() {
        return driver;
    }

    static JUnitCore junitCore;
    static Class<?> testClasses;
    public static void main(String[] args) {
  System.out.println("Running Junit Test Suite.");

        junitCore = new JUnitCore();

        junitCore.addListener(new CustomExecutionListener());

        Result result = junitCore.run(TestSuite.class);
        for (Failure failure : result.getFailures()) {
            System.out.println(failure.toString());
        }
        System.out.println("Successful: " + result.wasSuccessful() + " ran " + result.getRunCount() + " tests");
    }
}

Цель состоит в том, чтобы изменить роль разрешения в TestRunner при инициализации веб-драйвера с «NETADMIN», например, на. "SYSADMIN" и т. Д. Каждый раз, когда тесты завершаются и снова запускают один и тот же набор тестов.

Есть ли какой-то способ, как это сделать, или я должен подходить к этому по-другому? Спасибо.

1 Ответ

0 голосов
/ 02 апреля 2019

Я не очень хорош в Java, но я сделал то же самое в C # и Nunit.У меня были все мои тестовые методы в родительском классе.И имел несколько производных классов, которые реализуют метод, содержащий разницу.

Итак, у вас есть что-то вроде этого (псевдокод):

parentClass{
  [Test]
  testMethod1(){
    login();
    //test things
  }
  [Test]
  testMethod2(){
    login();
    //test other things
  }   
}
[TestSuite]
subclass1()<<parentClass{
  login(){
    //do first type of login
  }
}
subclass2()<<parentClass{
  login(){
    //do second type of login
  }
}

Таким образом, тесты выполняются в пределах 2 производных классов, ноони наследуют все тестовые методы от родительского класса.Вероятно, будут некоторые детали, которые я пропущу, но это был мой подход.

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

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