JUnit - Как вызвать тестовый метод только из другого класса

У меня два класса.

Один с тестом JUnit следующим образом:

public class ValidateResponseCodeTest {

    @ClassRule
    //code here

    @BeforeClass
    //more code

    @Test
    public void sendAndReceiveCodeCheck() {
        // test code goes here
        System.out.println("only this ran!");
    }
}

Затем у меня есть еще один класс, который я хочу использовать для вызова этого теста sendAndReceiveCodeCheck.

Public class AllTests {

    @ClassRule
    //code here

    @BeforeClass
    //more code

    private final ValidateResponseCodeTest validateResponseCodeTest;

    public AllTests() {
        validateResponseCodeTest = new ValidateResponseCodeTest();
    }

    @Test
    public void runTest() {
        ValidateResponseCodeTest.sendAndReceiveCodeCheck();
    }
}

Как я могу гарантировать, что метод runTest()ТОЛЬКО запускает код в тестовом методе sendAndReceiveCodeCheck и не запускает весь код в классе: ValidateResponseCodeTest

В идеале я не хочу никоим образом удалять аннотации или прикасаться к классу ValidateResponseCodeTest.

Удалите аннотации в ValidateResponseCodeTest.

user1766169 24.04.2018 12:25

Есть ли другой способ сделать это, не удаляя их?

Saffik 24.04.2018 12:29

Не знаю. Почему у вас, например, аннотацию Before, если вы не хотите, чтобы код выполнялся?

user1766169 24.04.2018 12:33

Вы можете объяснить, зачем вам это нужно? Вам нужно запустить набор тестов из TestClass в зависимости от configuratoin / profile? (т.е. запускать только 5, а не 10, если профиль "по умолчанию"). Может быть другой способ обойти это, без необходимости вызывать метод самостоятельно.

Cargeh 24.04.2018 12:33

У меня около 20 тестов в 20 классах. Я хотел вызвать все тесты в одном классе, который будет ссылаться на все эти 20 тестов. Каждый тест в классе выполняет некоторые настройки, что является обычным явлением, и я просто хотел сделать это один раз, например, для AllTests. Каждый раз, когда я вызываю тест, я не хочу, чтобы он выполнялся 20 раз, поэтому хочу запустить только тестовый метод.

Saffik 24.04.2018 12:42

@Saffik Удалите аннотацию Test из ValidateResponseCodeTest и переместите аннотацию Before в AllTests.

user1766169 24.04.2018 13:45

@ user1766169 - оцените ваш ответ, но есть ли другой способ сделать это, не меняя даже 1 строку в ValidateResponseCodeTest

Saffik 24.04.2018 14:02

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

Eduardo Meneses 24.04.2018 19:22

@Saffik подробнее здесь

Eduardo Meneses 24.04.2018 19:27

@EduardoMeneses - Отлично, я изменил его на @BeforeClass. Причина, по которой я хочу выполнять ТОЛЬКО код из класса ValidateResponseCodeTest.sendAndReceiveCodeCheck и ничего больше, заключается в том, что этот «код установки» будет выполнен один раз в классе AllTests - установка создает контейнеры докеров. Я не хочу создавать их снова в ValidateResponseCodeTest, что приведет к дублированию создания контейнера. Есть идеи, как я могу просто вызвать ТЕСТ-КОД только с ValidateResponseCodeTest?

Saffik 25.04.2018 15:18

@Saffik Я никогда не видел этого с использованием java. Вы можете сделать это, используя знаток (mvn -Dtest = TestCircle # mytest test) или, возможно, используя Gradle (gradle test --tests org.gradle.SomeTest.someSpecificFeature). Если вы вызываете single test, вы всегда будете вызывать BeforeClass и Before.

Eduardo Meneses 25.04.2018 16:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
11
985
0

Другие вопросы по теме