2017-08-14 156 views
0

我想通過TestNG數據提供程序給出文件名列表,因此測試可以加載每個文件。帶有使用lambda的文件夾內容的TestNG數據提供程序

Object[][] result = Files.list(Paths.get("tst/resources/json")) 
      .filter(Files::isRegularFile) 
      .map(fileName -> new Object[] { fileName }) 
      .toArray(Object[][]::new); 

我得在那裏我可以從文件夾中的內容建立對象[] []點,但TestNG的拋出異常:

org.testng.internal.reflect.MethodMatcherException: 
Data provider mismatch 
Method: testFBTinka11InterpretJson([Parameter{index=0, 
type=java.lang.String, declaredAnnotations=[]}]) 
Arguments: [(sun.nio.fs.WindowsPath$WindowsPathWithAttributes)tst\resources\json\admin.json] 

at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:52) 

...

回答

1

它看起來對我來說你使用你的數據提供者的@Test方法只接受文件名作爲String,但你的數據提供者實際上是爲它提供了一個File對象,那就是它的破壞。

你有兩個選擇:

  1. 你改變@Test方法接受一個File對象,而不是String。 (或)
  2. 您更改數據提供程序以開始僅提供File對象的絕對路徑,而不是File對象。即變化.map(fileName -> new Object[] { fileName })變爲.map(fileName -> new Object[] { fileName.getAbsolutePath() })
+0

謝謝!它實際上是一個Path,但這是代碼的問題。 (路徑 - >新對象[] {path.toString()})'' –

相關問題