如何在嵌套的Junit 5测试中访问外部测试实例/参数

时间:2017-11-05 11:41:30

标签: java junit junit5

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" rel="stylesheet" />

    <div class="tab-section text-center">
        <div class="row">
            <div class="col right-border">
                <div>
                    <h2>$ 2,300</h2> Today's Revenue
                </div>
            </div>
            <div class="col bottom-border">
                <div>
                    <h2>$ 53,100</h2>Expected Revenue for this month
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col top-border">
                <div>
                    <h2>12</h2> Bookings taken today
                </div>
            </div>
            <div class="col left-border">
                <div>
                    <h2>68%</h2>Total Monthly occupancy
                </div>
            </div>
        </div>
    </div>

1 个答案:

答案 0 :(得分:1)

InnerTests不在测试树中的参数化测试之下:

enter image description here

因此,您无法将测试方法的参数传递给嵌套测试类。

这是一种在JUnit Jupiter中定义接口测试的方法:

interface MyInterfaceTests {

    MyInterface newInstance();

    @Test
    default void test() {
        MyInterface instance = newInstance();
        // test something
    }
}

class ImplATests implements MyInterfaceTests {
    @Override
    public MyInterface newInstance() {
        return new ImplA();
    }
}

class ImplBTests implements MyInterfaceTests {
    @Override
    public MyInterface newInstance() {
        return new ImplB();
    }
}

或者,您可以使用@TestFactory

编写它
@TestFactory
Stream<DynamicNode> test() {
   return Stream.of(new ImplA(), new ImplB())
       .map(instance -> dynamicContainer(instance.getClass().getSimpleName(), Stream.of(
           dynamicTest("test 1", () -> {
               // test something
           }),
           dynamicTest("test 2", () -> {
               // test something else
           })
       )));
}