Поддерживает ли TestNG что-то вроде @Rule в JUnit4? - PullRequest
35 голосов
/ 23 мая 2011

Есть ли в TestNG что-то вроде @Rule?Я имею в виду конкретно:

@Rule public TemporaryFolder folder = ...

Или даже

@Rule public MethodRule globalTimeout = new Timeout(20);

Я знаю, что могу вручную реализовать эти вещи, используя setUp() и tearDown() эквиваленты, но они недайте мне удобство использования @Rule.

Ответы [ 2 ]

4 голосов
/ 23 мая 2011

Правила довольно легко эмулировать, например, с суперклассами:

public void Base {
  @BeforeMethod
  public void createTempDir() { ... }

  @AfterMethod
  public void deleteTempDir() { ... }
}

public void MyTest extends Base {
  @Test
  ...
}

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

ПреимуществоЭтот подход по сравнению с Правилами заключается в том, что Правила всегда ограничены областью классов, а с помощью TestNG вы можете реализовать их вокруг методов, тестов, классов, групп и даже наборов.

0 голосов
/ 18 октября 2016

BeforeClass / AfterClass из TestNG может имитировать что-то вроде rule / ruleClass из JUnit, но есть некоторые функции и эффекты, которые эти классы не могут воспроизвести, такие как: повтор, фильтр и т. Д.

Однако есть некоторые интерфейсы, предоставляемые TestNG, которые можно использовать для имитации этих функций, например, IAnnotationTransformer, IMethodInterceptor.

...