我想知道是否有一种方法可以从TestNG的数据提供程序中传递lambda表达式。所以我想做类似以下的事情:
而且之后进行一些测试,例如:
@DataProvider(name="checkProvider")
public Object[][] checkProvider() {
return new Object[][]{
"Some string to test", (String string) -> string.length() > 2 //A predicate on how to test response
}
}
而且之后进行一些测试,例如:
@Test(dataProvider="checkProvider")
public void testsomething(String s, Predicate<String> checker) {
//so some operation on s to get a string I want to check
Assert.assertTrue(checker.check(someString));
}
现在我无法做到这一点,因为我得到了目标类型的lambda转换必须是一个接口。
有没有人有想法如何做到这一点,或者甚至提供一个替代方案,以便我可以实现所需的功能。
编辑:答案在第一个评论中。如果您先声明它,然后将其传递给Object [][],则可以正常工作。
Predicate<String> p = string -> string.length() > 2; public Object[][] dataProviderMethod() { return new Object[][] { { "用于测试的一些字符串" }, { p } }; }
我不知道在TestNG中它有多有用。 - undefined