JUnit - использовать метод в тесте из другого класса - PullRequest
0 голосов
/ 30 января 2019

Сценарий следующий:

У меня есть класс, который выполняет тесты для раздела проекта.

public class section1 extends BaseTest {

    @Test
    public void test1() {
        //somecode
    }
}

Дело в том, что в test1 я хочу использовать метод, определенный в другом тестовом классе (мы не используем объекты Page в проекте автоматизации).

public class section2 extends BaseTest {

    @Test
    public void test2() {
        //somecode
        methodOne();
    }

    void methodOne(){
        //somecode
    }
}

Итак, я попытался создать экземпляр и получить доступ к методу через него

section2 sec2 = new section2();
.
.
.
@Test
    public void test1() {
        //somecode
        section2.methodOne();
    }

Но он выдает исключение NullPointerException, как только он начинает выполнять метод.

Затем я попытался просто расширить класс section1 до section2 и использовать метод, поэтому здесь он выполняет метод, но, как только test1 заканчивается, он начинает выполнять тесты из расширенного класса, в данном случае,test2.

Как я могу это предотвратить, или есть другой способ использовать метод, не расширяя и не делая метод публичным?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Добавьте приведенный ниже код в класс section1:

section2 sec2;
@Before
public void initialize() {
    sec2 = new section2();
}

Поскольку мы используем аннотацию @Before JUnit, описанную выше, метод 'initialize ()' будет сначала выполняться там путем инициализации 'section2'class.

@Test
public void test1() {
    sec2.methodOne();
}

Тогда в методе @Test JUnit будет выполняться, поэтому вы не получите NPE.

0 голосов
/ 30 января 2019
Section 1 extends BaseTest

Section 2 extends BaseTest

Почему бы вам не попробовать это:

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