JUnit 4中的非空虚测试方法

rom*_*afe 3 java junit unit-testing annotations junit4

我想要一个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
  }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我得到一个错误:"java.lang.Exception:Method getFoo()应该是void",大概是因为测试方法必须返回void.任何人都知道这方面的任何方式?

Eug*_*hov 7

我不得不承认,这是一个巧妙的技巧,虽然它不能很好地扩展到多个测试场景.

无论如何,你可以使用自定义跑步者.例如:

@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
  }
}
Run Code Online (Sandbox Code Playgroud)