如何在 JUNIT 测试中从 WEB-INF 获取文件

How to get a file from WEB-INF in a JUNIT test

在网络应用程序的控制器中,当给定条件为真时,我将重定向到其他页面 (xyz.jpsx)。

现在,在 Junit 测试中,我想强制重定向正确完成,而且重定向指向实际存在的 jsp。

我无法在 Junit 中找到从 WEB-INF 中读取文件的方法。我不想对完整路径进行硬编码,因为该解决方案的可移植性不高。

我完全理解 WEB-INF 中的文件不在类路径中这一事实,但可能有一种方法可以访问这些文件。寻找一种也适用于我的集成服务器的便携式解决方案。

有很棒的 NIO.2 API in JDK 1.7 with class Path,在这个 class 的帮助下,您可以使用 JSP 轻松访问文件夹(没有任何 ServletContexts 或其他任何东西)并执行您需要的操作JSP 个文件列表,这里是给你的小样本:

import org.junit.Test;

import java.io.File;
import java.nio.file.Paths;

public class WebInfAccessTest
{
    @Test
    public void shouldListJsps()
    {
        File jspFolder = Paths.get("src/main/webapp/WEB-INF/pages").toFile();
        for (File jsp : jspFolder.listFiles())
            System.out.println(jsp.getName());
    }

}

======================================================================
Here is result for my test Maven project
======================================================================
$ mvn test
...
 T E S T S
-------------------------------------------------------
Running WebInfAccessTest
add.jsp
get.jsp
list.jsp
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.073 sec