【问题标题】:Run single test within a test suite in Eclipse在 Eclipse 的测试套件中运行单个测试
【发布时间】:2014-03-25 03:07:19
【问题描述】:

我总是喜欢只运行一个测试类的一个测试。现在我正在使用测试套件通过测试方法将我的测试排序到单独的类中。但是,如果我想运行测试套件的单个测试,Eclipse 不会运行 @BeforeClass 方法。

我有以下测试设置:

@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class })
public class TestSuite {

  @BeforeClass
  public static void setup (){
  // essential stuff for Test1#someTest
  }

  public static class Test1{
    @Test
    public void someTest(){}
    }
}

当我运行 someTest 时,它失败了,因为 TestSuite#setup 没有运行。有没有办法解决这个问题?

【问题讨论】:

    标签: java eclipse unit-testing junit4 test-suite


    【解决方案1】:

    如果你只是执行Test1,那么JUnit 不知道TestSuite,所以@BeforeClass 不会被拾取。您可以将@BeforeClass 添加到调用TestSuite.setup() 的Test1。这还需要在 TestSuite 中添加一个静态标志,以便它只执行一次。

    @RunWith(Suite.class)
    @SuiteClasses({ Test1.class, Test2.class })
    public class TestSuite {
        private static boolean initialized;
        @BeforeClass
        public static void setup (){
            if(initialized)
                return;
            initialized = true;
            System.out.println("setup");
            // essential stuff for Test1#someTest
        }
    
        public static class Test1{
        @BeforeClass
            public static void setup (){
                TestSuite.setup();
           }
            @Test
            public void someTest(){
                System.out.println("someTest");
            }
        }
    }
    

    【讨论】:

    • 真可惜,我希望有一些 Eclipse 魔法可以解决它!
    • 我知道这是一篇旧帖子......但试图让它发挥作用似乎缺少一些东西。我在套件中添加了设置方法,然后在测试类中添加了,但它不起作用,我得到 NullPointerExceptions。我看到在您的示例中,您有嵌套在 TestSuite 中的测试类,而我没有,我有不同的文件,但调用了 TestSuite.setup() 方法。
    猜你喜欢
    • 2016-11-24
    • 2013-12-11
    • 2019-11-24
    • 2016-12-13
    • 2010-12-03
    • 2010-10-13
    • 2011-10-15
    • 1970-01-01
    • 2016-11-07
    相关资源
    最近更新 更多