【问题标题】:TestNG @BeforeTest equivalent in JUnitJUnit 中的 TestNG @BeforeTest 等效项
【发布时间】:2012-01-22 22:59:16
【问题描述】:

我在http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/ 找到了比较。如何在 JUnit 中准备 @BeforeTest 之类的东西?

【问题讨论】:

    标签: unit-testing junit integration-testing testng


    【解决方案1】:

    据我了解,BeforeTest 指定了一种在运行一组测试之前运行的方法,并且可以为该组测试定义。 JUnit 中没有等效的分组,除了普通的套件,因此您必须定义一个套件并在您的套件中正常使用@BeforeClass@AfterClass

    如果您想要更复杂的行为,请参阅TestRule,尤其是ExternalResource

    【讨论】:

      【解决方案2】:

      不太熟悉TestNG,但据我了解,您可以通过CategoriesSuite@BeforeClass/@AfterClass 的组合来做类似的事情。

      例如:

      import org.junit.BeforeClass;
      import org.junit.experimental.categories.Categories;
      import org.junit.experimental.categories.Categories.IncludeCategory;
      import org.junit.runner.RunWith;
      import org.junit.runners.Suite.SuiteClasses;
      
      
      @RunWith(Categories.class)
      @SuiteClasses(MyClassTest.class)
      @IncludeCategory(IntegrationTest.class)
      public class StaticTests {
          @BeforeClass
          public static void setUp() {
              System.out.println("Hello, World!");
          }
      }
      

      然后在您的测试中将事物标记为@Category(IntegrationTest.class),您将拥有一个逻辑分组的测试——来自多个不同的测试类——您可以围绕它们运行初始化。

      类别可让您标记特定测试以包含在套件中,但也可以(如果您首先按类分开)将相关测试包含在套件中或让它们从基类继承里面有那个配置。哪一个最好取决于您喜欢如何对测试和特定用例进行分组。

      正如Matthew Farwell 所提到的,还有TestRules 可以让您对围绕一组测试进行设置进行更细粒度的控制。

      【讨论】:

        猜你喜欢
        • 2013-12-09
        • 1970-01-01
        • 2018-03-16
        • 2015-08-15
        • 2011-11-12
        • 1970-01-01
        • 2018-11-21
        • 2012-04-28
        • 2014-07-26
        相关资源
        最近更新 更多