Как выполнить кусок кода один раз перед началом всех тестовых классов? - PullRequest
0 голосов
/ 23 октября 2019

Как я могу выполнить метод один раз перед началом всех тестов во всех классах?

У меня есть программа, для которой необходимо установить системное свойство перед началом любого теста. Есть ли способ сделать это?

Примечание: @BeforeClass или @Before используются только для одного и того же класса тестирования. В моем случае я ищу способ выполнить метод до запуска всех тестовых классов.

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Для настройки предварительных условий для ваших тестовых случаев вы можете использовать что-то вроде этого -

@Before
public void setUp(){
    // Set up you preconditions here
    // This piece of code will be executed before any of the test case execute 
}
1 голос
/ 23 октября 2019

если вам нужно запустить этот метод до начала всех тестов, вы должны использовать аннотацию @BeforeClass или если вам нужно выполнять один и тот же метод каждый раз, когда вы будете выполнять тестовый метод этого класса, вы должны использовать @Before

fe

@Before
public void executedBeforeEach() {
   //this method will execute before every single test
}

@Test
public void EmptyCollection() {
  assertTrue(testList.isEmpty());     
}
0 голосов
/ 23 октября 2019

Вы можете использовать Набор тестов.

Набор тестов

@RunWith(Suite.class)
@Suite.SuiteClasses({ TestClass.class, Test2Class.class, })
public class TestSuite {

    @BeforeClass
    public static void setup() {

        // the setup
    }
}

и тестовые классы

public class Test2Class {

    @Test
    public void test2() {

        // some test
    }
}
public class TestClass {

    @Test
    public void test() {

        // some test
    }
}

Или выможет иметь базовый класс, который обрабатывает настройку

public class TestBase {

    @BeforeClass
    public static void setup() {

        // setup
    }
}

, и тогда тестовые классы могут расширять базовый класс

public class TestClass extends TestBase {

    @Test
    public void test() {

        // some test
    }
}
public class Test2Class extends TestBase {

    @Test
    public void test() {

        // some test
    }
}

Однако это вызовет setupметод в TestBase для всех его подклассов каждый раз, когда выполняется каждый из них.

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