Does TestNG support something like JUnit4's @Rule?

前端 未结 2 1122
长发绾君心
长发绾君心 2020-12-15 03:29

Does TestNG have something like @Rule? I am thinking specifically about:

@Rule public TemporaryFolder folder = ...

Or even

相关标签:
2条回答
  • 2020-12-15 04:16

    Rules are pretty easy to emulate, for example with super classes:

    public void Base {
      @BeforeMethod
      public void createTempDir() { ... }
    
      @AfterMethod
      public void deleteTempDir() { ... }
    }
    
    public void MyTest extends Base {
      @Test
      ...
    }
    

    If you extend Base, a temporary directory will always be automatically created and then deleted.

    The advantage of this approach over Rules is that Rules are always class scoped, while with TestNG, you can implement them around methods, tests, classes, groups and even suites.

    0 讨论(0)
  • 2020-12-15 04:24

    BeforeClass/AfterClass of TestNG can simulate something like the rule/ruleClass of JUnit, but there are some functions and effects that these classes cannot replicate, such as: repeat, filter, etc.

    However, there are some interfaces provided by TestNG that could be used to simulate these functions instead, e.g. IAnnotationTransformer, IMethodInterceptor.

    0 讨论(0)
提交回复
热议问题