在java中,我可以使用注释条件执行方法吗?使用注释条件执行方法
我希望有一些系统属性集,并基于该系统属性我希望在运行时执行或不执行方法(特别是基于Ant脚本的JUnits)。
请让我知道是否有可能使用注释。
在java中,我可以使用注释条件执行方法吗?使用注释条件执行方法
我希望有一些系统属性集,并基于该系统属性我希望在运行时执行或不执行方法(特别是基于Ant脚本的JUnits)。
请让我知道是否有可能使用注释。
为此,您可以实现您自己的TestRunner或用户AOP。
Java计算机编程语言中的注释是一种可以添加到Java源代码中的语法元数据形式。类,方法,变量,参数和包可能被注释。
看看this
我认为你可以在Java中实现,但我建议你看一看上Spring AOP - 我认为这是你在找什么。
您可以按@Category对测试进行分组,并告诉运行包含此类别。
从http://alexruiz.developerblogs.com/?p=1711
public interface FastTests { /* category marker */ }
public interface SlowTests { /* category marker */ }
public class A {
@Category(SlowTests.class)
@Test public void a() {}
}
@Category(FastTests.class})
public class B {
@Test public void b() {}
}
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@ExcludeCategory(FastTests.class)
@SuiteClasses({ A.class, B.class })
public class SlowTestSuite {}
我会写通过扩展BlockJUnit4ClassRunner
一个简单的自定义测试运行。该跑步者将从系统属性或配置文件读取配置,以仅运行定义的测试。最简单的解决方案将是一个黑名单来排除所选方法,因为此(默认!)运行器的默认行为是运行每个测试。
然后只是说
@RunWith(MyTestRunner.class)
public void TestClass {
// ...
}
对于实现,它可以sufficiant只覆盖getChildren()
方法:根据
@Overwrite
List<FrameworkMethod> getChildren() {
List<FrameworkMethod> fromParent = super.getChildren();
List<FrameworkMethod> filteredList = new ArrayList(filter(fromParent));
return filteredList;
}
其中过滤器检查每一个FrameworkMethod
是否应被执行或不到基于财产创建的“黑名单”。
我不确定是否有问题:您是否在寻找启用/禁用JUnit测试的方法,具体取决于某些系统属性? – Puce