我有一个Java项目,它在资源上有多个测试导演。
\target\test-classes
|___conf
| |_ items...
|___otherdata
|_ items...
我需要访问它的根\target\test-classes
,所以我可以在目录之间切换,因为测试用例一次使用BOTH目录中的文件。
尝试:
File targetClassesDir = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
File targetDir = targetClassesDir.getParentFile();
和
getClass().getResource("test-classes").getPath()
但尚未访问test-classes
的根目录。
我构建了一个非常糟糕的解决方法......:
tuple4TestsuiteContainer.add(new HeaderBodyPayloadTestcase(
"conf\\" + xqueries[0],
getClass().getResource("/").getPath(),
"xquery-testdata\\" + file.substring(file.lastIndexOf(File.separatorChar) + 1),
"xquery-testdata\\" +expectedFiles[0].substring(expectedFiles[0].lastIndexOf(File.separatorChar) + 1)
));
并在实际的测试人员中:
String xqueryFileContent = readFile(testDataBasePath + xQueryUnderTestPath, encoding);
答案 0 :(得分:1)
我不确定是否能够正确理解您的问题。如果在运行中的java中尝试更改目录,则可以执行以下操作:
public class Main {
public static void main(String args[]) {
String[] s = { "c:\\some\\place\\cdexe.exe",
"c:\\start\\dir", "c:\\my\\batch\\file.bat", "arg1", "..." };
try {
java.lang.Runtime.getRuntime().exec(s);
} catch (java.io.IOException e) {
e.printStackTrace();
}
} }
如果有帮助,请告诉我,希望更多地了解您的问题。
答案 1 :(得分:1)
我也不确定您的用例和项目设置(Maven?),但在我看来,您根本不应显式访问目标/测试类中的任何文件,并使用资源文件夹中的ClassLoader加载资源
How to get the path of src/test/resources directory in JUnit?
答案 2 :(得分:0)
我不确定我是否正确理解你的问题。我假设你需要访问一些数据(资源)。 如果在maven步骤期间将资源复制到目标目录,那么您可以通过类似
之类的代码在代码中获取此资源的路径(例如测试)String resrouce = "data/bla/blub.txt";
String pathToResource = URLDecoder.decode(this.getClass().getResource(resource).getFile(), "UTF-8");