1

我正在尝试使用 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...

}

这是好的解决方案吗?

4

1 回答 1

8

您可以使用以下命令,而不是断言该属性为真org.junit.Assume

 @Before
 public void checkAssumptions() {
     org.junit.Assume.assumeTrue(someCondition());
     // or import static org.junit.Assume.* and then just call assumeTrue()
 }

如果条件为假,那么这将导致测试以违反假设结束。正如文档所说

失败的假设并不意味着代码被破坏,而是测试没有提供有用的信息。

这是一个比断言失败(即测试失败)更弱的条件,默认的 JUnit 运行器会将此测试视为已忽略。这听起来正是您正在寻找的 - 如果持久性有效,则运行测试,否则忽略它。

于 2013-10-14T10:52:15.343 回答