根据条件运行特定的单元测试

时间:2016-09-12 09:35:08

标签: java junit junit4

我有一个测试类,包含蓝色和非蓝色设备的测试用例。如果设置了参数isBlue,那么它应该只运行那些说@Blue注释的测试用例。我不确定如何实现这个将实现此功能的特定注释。

public class TestClass {

   boolean isBlue = false;

   @Before
   public void setUp () {
      isBlue = MyApplication.instance().isBlue();
   }

   @Test
   public void testA () { ... }

   @Test @Blue
   public void testB() { ... }
}

在此示例中,如果isBluetrue,则应仅运行testB(),否则应运行所有测试用例

3 个答案:

答案 0 :(得分:0)

看看JUnit跑步者。 Nice explanation of runners

您可以创建自己的跑步者,该跑步者将在BlockJUnit4ClassRunner上延伸。

您可以覆盖

@Override
  protected List<FrameworkMethod> getChildren() {
    // scan test class for methonds annotated with @Test
  }

要另外按设置自定义注释的方法进行过滤,并设置应用程序中的属性。

答案 1 :(得分:0)

我认为你走错了路。

您希望您的测试用例有助于识别问题;并帮助您修复他们。任何“分散”你的目的都会降低单位测试的价值。

因此:不要将具有真正“不同”范围的测试放入同一个测试类中。特别是从角度来看:你如何控制“MyApplication.instance()”会返回什么?这听起来本身就是一个问题。

含义:您想要进行两次独立测试;而那些不依赖某些“静态”物体告诉他们的东西。他们测试范围内的内容;没别的。

答案 2 :(得分:0)

使用jUnit https://developer.foursquare.com/docs/photos/add

@Test
public void testA () { 
    assumeTrue(MyApplication.instance().isBlue());
    ... 
}
  

Assume