无锡做网站seo,网站建设服务8,如何更快的学习.net网站开发,郑州今晚发布会junit动态忽略测试我一直认为使用Ignore停用测试是一个坏主意。 例外#xff0c;这可能是一种将间歇性失败的测试放入隔离区以供以后处理的方法#xff08;如Martin Fowler 在此处所述 #xff09;。 随着越来越多的测试不断被忽略和遗忘#xff0c;这带来了测试套件衰减的… junit动态忽略测试 我一直认为使用Ignore停用测试是一个坏主意。 例外这可能是一种将间歇性失败的测试放入隔离区以供以后处理的方法如Martin Fowler 在此处所述 。 随着越来越多的测试不断被忽略和遗忘这带来了测试套件衰减的危险。 因此您应该有一个政策来确保测试隔离时间不会太长。 好吧所以直到最近我才想到 在我和Frank共同致力于的项目中我们遇到了此处描述的SWT问题。 在非Windows平台上断言SWT小部件是否已获得输入焦点不适用于自动测试。 我们决定暂时忽略非Windows平台上与焦点相关的测试。 尽管我们的构建服务器在Linux上运行但是我们发现这两个开发环境都在Windows上运行因此它足够安全。 在JUnit中 假设是跳过在给定条件下没有意义的测试的方法。 这样表示我们的测试将如下所示 public void testFocus() {assumeTrue( isRunningOnWindows() );// ...
} 但是我们根本不希望测试代码与条件混为一谈。 决定是否忽略测试的代码应与测试代码本身分开。 这导致我们创建了ConditionalIgnore批注和相应的规则以将其挂钩到JUnit运行时中。 事情很简单最好用一个例子来解释 public class SomeTest {Rulepublic ConditionalIgnoreRule rule new ConditionalIgnoreRule();TestConditionalIgnore( condition NotRunningOnWindows.class )public void testFocus() {// ...}
}public class NotRunningOnWindows implements IgnoreCondition {public boolean isSatisfied() {return !System.getProperty( os.name ).startsWith( Windows );}
} ConditionalIgnore批注需要一个“ condition”属性该属性指向实现IgnoreContition的类。 在运行时将创建IgnoreCondition实现的实例并且其isSatisfied方法确定是否忽略测试返回true返回false。 最后有一个IgnoreConditionRule它将注释链接到JUnit运行时中。 如果IgnoreCondition实现决定忽略测试用例则抛出AssumptionViolatedException。 因此ConditionalIgnore注释的效果与假定条件将返回false的效果相同。 略有不同我们认为是一个优势对于被忽略的测试不会执行Before和After方法。 该规则及其相关类的源代码可以在这里找到。 假设的另一个问题是它会影响测试统计信息。 如果发现Assume条件为假则即使未运行测试也将其视为通过测试。 为了克服这个问题您必须提供自己的运行程序以所需的方式处理AssumptionViolatedException。 即使我刚刚写了关于忽略长度测试的文章但我仍然坚信最好不要忽略测试只有在特殊情况下才应该忽略。 参考来自Code Affine博客的JCG合作伙伴 Rudiger Herrmann的有条件忽略测试的JUnit规则 。 翻译自: https://www.javacodegeeks.com/2013/11/a-junit-rule-to-conditionally-ignore-tests.htmljunit动态忽略测试