繁体   English   中英

JUnit 4中的非空虚测试方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM