我正在尝试用JUnit编写条件测试。我需要测试对象的持久性,如果这些测试通过,请通过HTTP方法测试访问(以便开发REST Web服务)。
目前我的解决方案如下:
public class ApplicationTest {
@Test
public void testSuite() {
final Request requestStatutTest = Request.method(this.getClass(), "insertStatutTest");
final Result resStatutTest = new JUnitCore().run(requestStatutTest);
if (resStatutTest.wasSuccessful()) {
postStatutTest();
getStatutTest();
putStatutTest();
deleteStatutTest();
}
public void insertStatutTest() {
}
public void postStatutTest() {
}
// etc...
}
这是一个好的解决方案吗?
答案 0 :(得分:8)
您可以使用org.junit.Assume
而不是断言该属性为真,
@Before
public void checkAssumptions() {
org.junit.Assume.assumeTrue(someCondition());
// or import static org.junit.Assume.* and then just call assumeTrue()
}
如果条件为假,那么这将导致测试以违反的假设结束。正如the docs say:
失败的假设并不意味着代码被破坏,而是测试没有提供有用的信息。
这是一个弱于断言失败的条件(即测试失败),默认的JUnit运行器会将此测试视为忽略。这听起来就像你正在寻找的 - 如果持久性有效,则运行测试,否则忽略它。