@DataProviderを使用してデータを取得しようとしています。これはObject[][]
、別のメソッドを呼び出して値を貼り付けているを返します。このメソッドは、@Parametersを使用して XML から値を取得します。
問題は、@DataProviderが value を渡して@Parametersで必要なメソッドを呼び出しているNullPointerException
ため、 @ Parametersがこの値を XML から適切な値に変更することを期待しているためです。同時に、引数を渡さないでメソッドを呼び出すことはできません。null
コード:
クラスTestSuite
package blablabla.mainPackage;
import blablabla.framework.*;
import java.io.IOException;
import java.util.ArrayList;
import org.testng.annotations.Test;
public class TestSuite extends Config {
FilesOperations fOps = new FilesOperations();
List<String> fileNames = new ArrayList<String>();
@Test(groups = {"positive"},
dataProvider = "getRandomFileName",
priority = 1)
public void createFileRandom(String fileName) throws IOException {
fOps.createFile(fileName, tempPath);
fileNames.add(fileName);
}
}
クラスConfig
package blablabla.mainPackage;
import blablabla.framework.*;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Parameters;
public class Config extends DataProviders{
public static Path tempPath;
DirectoriesOperations dirOps = new DirectoriesOperations();
@BeforeSuite(alwaysRun = true)
@Parameters({"path"})
public void tearUp(String path) throws IOException {
tempPath = dirOps.createTempDir(Paths.get(path));
}
@AfterSuite(alwaysRun = true, enabled = true)
public void tearDown() throws IOException {
dirOps.deleteTempDirOnExit(tempPath);
}
}
クラスDataProviders
package blablabla.framework;
import java.io.IOException;
import org.testng.annotations.DataProvider;
public class DataProviders {
FilesOperations fOps = new FilesOperations();
HelpFunctions hf = new HelpFunctions();
ParametrizedFunctions pf = new ParametrizedFunctions();
@DataProvider(name = "getRandomFileName")
public Object[][] getRandomFileName() {
return new Object[][]{new Object[]{pf.generateRandomFileNameWithExtension(null)}};
}
}
クラスParametrizedFunctions
package blablabla.framework;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.testng.annotations.Parameters;
public class ParametrizedFunctions {
FilesOperations fOps = new FilesOperations();
HelpFunctions hf = new HelpFunctions();
@Parameters({"extensionsArray"})
public String generateRandomFileNameWithExtension(String extensionsArray) {
return fOps.getFileName(hf.stringToArray(extensionsArray), null);
}
}
ここでは、@Parameters({"extensionsArray"})
XML ファイルから値を提供しません。null
メソッドを呼び出すための引数として渡された を受け取るだけgenerateRandomFileNameWithExtension()
です。同時に、呼び出されたメソッドに引数を渡さずに@DataProviderからこのメソッドを呼び出すことはできません。
あなたの提案を願っています。