[英]Non-void test methods in JUnit 4
我想要一个JUnit 4测试类来实现与其测试类相同的接口。 这样,当接口发生变化时(我们正处于早期开发阶段),编译器会保证将相应的方法添加到测试类中。 例如:
public interface Service {
public String getFoo();
public String getBar();
}
public class ServiceImpl implements Service {
@Override public String getFoo() { return "FOO"; }
@Override public String getBar() { return "BAR"; }
}
public class ServiceTest implements Service {
@Override
@Test
public String getFoo() {
//test stuff
}
@Override
@Test
public String getBar() {
//test stuff
}
}
当我尝试这个时,我得到一个错误:“java.lang.Exception:Method getFoo()应该是void”,大概是因为测试方法必须返回void。 任何人都知道这方面的任何方式?
我不得不承认,这是一个巧妙的技巧,虽然它不能很好地扩展到多个测试场景。
无论如何,你可以使用自定义跑步者。 例如:
@RunWith(CustomRunner.class)
public class AppTest {
@Test
public int testApp() {
return 0;
}
}
public class CustomRunner extends JUnit4ClassRunner {
public CustomRunner(Class<?> klass) throws InitializationError {
super(klass);
}
protected void validate() throws InitializationError {
// ignore
}
}
一种更自然的方式可能是使用代码覆盖工具,例如Cobertura 。 它很好地与JUnit集成并且它向您展示了在某些情况下您的测试可能不足的情况(在很多情况下,这样的工具无法捕获)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.