wg2*_*oUo 3 java selenium junit5
假设我有以下代码:
class Testing {
    String[] text() {
        String[] text = { "A", "B" };
        return text;
    }
    @Nested
    class NestedTesting {
        @ParameterizedTest
        @MethodSource("text")
        void A(String text) {
            System.out.println(text);
        }
        @ParameterizedTest
        @MethodSource("text")
        void B(String text) {
            System.out.println(text);
        }
    }
}
运行此命令时,我得到:
No tests found with test runner 'JUnit 5'.
我该如何工作?我是Java的初学者,所以我可能会忘记一些明显的东西
最简单的方法是static通过其完全限定的方法名称来引用工厂方法,例如@MethodSource("example.Testing#text()")。
为了进一步简化问题,您可以引入一个自定义组合注释,该注释结合了的配置@ParameterizedTest,@MethodSource如下所示:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@ParameterizedTest
@MethodSource("example.Testing#text()")
public @interface ParameterizedTextTest {
}
然后,您可以像这样重用它:
package example;
import org.junit.jupiter.api.Nested;
class Testing {
    static String[] text() {
        return new String[] { "A", "B" };
    }
    @Nested
    class NestedTesting {
        @ParameterizedTextTest
        void testA(String text) {
            System.out.println(text);
        }
        @ParameterizedTextTest
        void testB(String text) {
            System.out.println(text);
        }
    }
}
测试愉快!