У меня два класса.
Один с тестом 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.
Есть ли другой способ сделать это, не удаляя их?
Не знаю. Почему у вас, например, аннотацию Before, если вы не хотите, чтобы код выполнялся?
Вы можете объяснить, зачем вам это нужно? Вам нужно запустить набор тестов из TestClass в зависимости от configuratoin / profile? (т.е. запускать только 5, а не 10, если профиль "по умолчанию"). Может быть другой способ обойти это, без необходимости вызывать метод самостоятельно.
У меня около 20 тестов в 20 классах. Я хотел вызвать все тесты в одном классе, который будет ссылаться на все эти 20 тестов. Каждый тест в классе выполняет некоторые настройки, что является обычным явлением, и я просто хотел сделать это один раз, например, для AllTests. Каждый раз, когда я вызываю тест, я не хочу, чтобы он выполнялся 20 раз, поэтому хочу запустить только тестовый метод.
@Saffik Удалите аннотацию Test из ValidateResponseCodeTest и переместите аннотацию Before в AllTests.
@ user1766169 - оцените ваш ответ, но есть ли другой способ сделать это, не меняя даже 1 строку в ValidateResponseCodeTest
@Saffik, почему бы вам не выполнить необходимую настройку, используя аннотацию BeforeClass вместо этого? (BeforeClass запускает эту конфигурацию перед любым тестом, а Before запускает ее перед каждым тестом)
@Saffik подробнее здесь
@EduardoMeneses - Отлично, я изменил его на @BeforeClass. Причина, по которой я хочу выполнять ТОЛЬКО код из класса ValidateResponseCodeTest.sendAndReceiveCodeCheck и ничего больше, заключается в том, что этот «код установки» будет выполнен один раз в классе AllTests - установка создает контейнеры докеров. Я не хочу создавать их снова в ValidateResponseCodeTest, что приведет к дублированию создания контейнера. Есть идеи, как я могу просто вызвать ТЕСТ-КОД только с ValidateResponseCodeTest?
@Saffik Я никогда не видел этого с использованием java. Вы можете сделать это, используя знаток (mvn -Dtest = TestCircle # mytest test) или, возможно, используя Gradle (gradle test --tests org.gradle.SomeTest.someSpecificFeature). Если вы вызываете single test, вы всегда будете вызывать BeforeClass и Before.




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