如何将文件传递给testng测试方法?

时间:2012-12-10 14:44:57

标签: java unit-testing annotations testng

我有以下目录结构:

更新结构

src
 |
 -test
     |
     -java
     |   |
     |   -SomeXmlTest.java
     |
     -resources
          |
          -someXmlContent.xml

我觉得这样的做法很糟糕:

new File(C:\Project ... \src\resources\someXmlContent.xml)

// or magic dance like that
File currentDir = new File(System.getProperty("user.dir");
File parent = currentDir.getParent();
for (File file:parent.listFiles()){
    //find resources directory and iterate over it files
}

我相信有一个简单的注释基础解决方案,例如我只是在一些注释中编写“src \ resources \ someXmlContent.xml”并自动解析路径,但是我该怎么办呢?

2 个答案:

答案 0 :(得分:1)

使用资源代替文件。通过这种方式,您可以将应用程序打包在jar中并检索jar内的资源。

使用InputStream而不是File / FileInputStream:

InputStream in = getClass().getResourceAsStream("/someXml.xml");

这是比File更通用的解决方案。

答案 1 :(得分:0)

如果你可以重构你的代码!它应该采取输入流而不是文件。然后在内存流中使用(例如apache commons IOUtils)。这样您就无法访问任何外部资源