Можем ли мы пропустить java @AfterClass метод в testng xml - PullRequest
0 голосов
/ 03 октября 2019

У меня есть тестовый Java-класс с некоторым тестом, имеющим @BeforeClass и @AfterClass. Я использую XML для запуска этого класса testng. Некоторое время мне может понадобиться пропустить @AfterClass, который обычно очищает тестовую площадку.

Как этого добиться, чтобы пропустить только @ AfterClass

Ответы [ 4 ]

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

Вы можете попробовать использовать слушатели TestNG для этого. Например, у нас может быть следующий тестовый класс com.example.SampleTest:

public class SampleTest {

  @BeforeClass
  public void setUp() {
    System.out.println("Executing before class method.");
  }

  @Test
  public void test() {
    Assert.assertEquals(1, 1);
  }

  @AfterClass
  public void tearDown() {
    System.out.println("Executing after class method.");
  }
}

Чтобы отключить выполнение метода @AfterClass, вы можете создать прослушиватель com.example.AfterClassListener, например:

public class AfterClassListener implements IAnnotationTransformer2 {

  @Override
  public void transform(IConfigurationAnnotation annotation, Class testClass,
      Constructor testConstructor, Method testMethod) {
    if (annotation.getAfterTestClass()){
      annotation.setEnabled(false);
    }
  }
}

После этого добавьте этот слушатель в ваш testng.xml файл:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="test-suite" verbose="1" thread-count="3" parallel="none">
  <listeners>
    <listener class-name="com.example.AfterClassListener"/>
  </listeners>
  <test name="Login Test">
    <classes>
      <class name="com.example.SampleTest"/>
    </classes>
  </test>
</suite>

Если вы захотите включить его снова, просто удалите этого слушателя из testng.xml

0 голосов
/ 04 октября 2019

Если это заранее решено, то есть до того, как пакет начнет работать, вы знаете, хотите очистить или нет, вы можете управлять им с помощью параметров / системных свойств. Поместите параметр в ваш XML-файл и установите true и false в зависимости от того, что вам нужно сделать. Вы даже можете прочитать его из системных переменных.

Ваш @AfterClass может проверить

if (toDeleteDb) -> clear -> else return (do nothing)

Если это во время выполнения, установите свойство и замените условие if этим свойством.

0 голосов
/ 03 октября 2019

@ BeforeClass вызывается один раз перед началом всех тестов, аналогично @AfterClass вызывается только один раз после выполнения всех тестов. Таким образом, добавление проверок сценариев в методе @AfterClass не имеет смысла, поскольку это последний метод, который будет выполняться в вашем классе junit и при выходе из программы. Это все, что вы хотите проверить на определенные условия до / после каждого выполнения @Test, используйте @ Before / @ After

0 голосов
/ 03 октября 2019

Некоторые сценарии в моем случае, я хочу пропустить дополнительный класс

Так что "некоторые сценарии" поместите в условное

@AfterClass
public void after()
{
    if (something)
    {
        //do stuff
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...