当前位置: 首页 > 知识库问答 >
问题:

由于文件夹路径,Spring Boot测试失败

华心思
2023-03-14

我正在用JUnit测试一个Spring Boot微服务,我对该服务的resources文件夹中的文件夹路径有问题。

为了通过测试,我必须把文件夹的绝对路径,相反,当使用完整的应用程序时,它与相对路径完美配合。我尝试了一些从相对到绝对路径的翻译,但都不起作用,测试只有在给出绝对路径时才通过,而不是计算。

这些是我的文件:

JSONRequest。爪哇:

String absolutePath = String.valueOf(Paths.get("DecryptService/src/main/resources/KEY_DECR/").toAbsolutePath());
        System.out.println(absolutePath);
        try (FileWriter file = new FileWriter(absolutePath + "/tmpFile.json")) {
            file.write(result.get("json"));
            file.flush();
        } catch (IOException e) {
            e.printStackTrace();
            loggerApplicativeJSON.error("{} - failed to create the temporary file.", result.get("username"));
        }

DecryptServiceApplicationests.java:

@SpringBootTest
class DecryptServiceApplicationTests {

    private static JSONRequest jsonRequest = null;

    @BeforeAll
    static void setUp() {
        jsonRequest = new JSONRequest();
    }

    @Test
    public void applicationStartTest() {
        DecryptServiceApplication.main(new String[] {});
    }

    @Test
    public void correctDecryptJSON(){
        JSONObject json = new JSONObject();
        try {
            json.put("username", "luca");
            json.put("json", "--- values ---");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        String expectedResult ="Unit:";
        assertThat(String.valueOf(jsonRequest.post(json.toString())), containsString(expectedResult));
    }
}

提前谢谢你。

共有1个答案

丌官坚秉
2023-03-14

我认为首先你应该回答以下问题:你是在写集成测试还是单元测试?

目前,你似乎在同时做这两件事,一方面,你正在以编程方式创建一个JSONRequest对象(在单元测试中更常见,在单元测试中,你以编程方式实例化被测对象),但你也在启动整个Springhtml" target="_blank">应用程序。

如果您正在编写一个单元测试,您对测试文件系统中是否存在某个特定路径并不感兴趣,那么您更感兴趣的是测试逻辑行为。(如果要验证测试中的文件写入https://blogs.oracle.com/javamagazine/post/working-and-unit-testing-with-temporary-files-in-java).

如果您正在编写集成测试,那么您可以将路径视为应用程序的属性,并且可以轻松地重构应用程序,以便根据您的环境采用不同的值(实时与集成测试)。

无论哪种情况,您都可能需要重构代码,将配置部分(代码中当前包含路径的硬编码字符串)分离到一个属性中,以便您可以编写您想要的测试。

 类似资料:
  • 我是nodejs测试的新手,使用mocha和Chai。现在,我在使用mocha测试API路由处理程序时遇到了问题。我的路由处理程序代码是 Upload函数只是一个multer实用程序,用于存储imagefile。我的测试代码是 运行此代码后显示的输出为

  • 问题内容: 从命令行,如何设置Java CLASSPATH选项以指向包含多个jar文件的一个或多个目录?是否有通配符支持递归目录和子目录? (我的JAR文件在几个子目录中排序。) 问题答案: 如果您使用的是Java 6或更高版本,则可以使用以下形式的通配符: 如果要添加所有子目录:lib \ a \,lib \ b \,lib \ c \,则除了以下以外,没有其他机制: 您想要完成的工作没有类似或

  • 英文原文:http://emberjs.com/guides/testing/testing-routes/ 单元测试方案和计算属性与之前单元测试基础中说明的相同,因为Ember.Route集成自Ember.Object。 路由测试可以通过集成测试或者单元测试来进行。集成测试对路由的测试具有更好地覆盖性,因为路由通常用来执行过渡和数据加载,这些测试在完整上下文中更加容易测试,而独立上下文则没有那么

  • 问题内容: 我只想从完整路径到文件获取文件夹路径。 例如,我想要得到(不包括)。 我已经尝试过这样的事情: 但是它给了我这样的结果: 这不是我需要的结果(为)。 关于如何获取文件路径的任何想法? 问题答案: 您几乎可以使用该功能了。您只需要加入字符串,如下所示。 虽然,我建议使用该函数来执行此操作,但是您只需要传递字符串即可,它将为您完成工作。由于您似乎在Windows上,因此也考虑使用该功能。一

  • 我只想从文件的完整路径中获取文件夹路径。 例如,我希望只得到(不包括)。 我曾经尝试过这样的事情: 但它给了我这样一个结果: 这不是我需要的结果(是)。 关于如何获取文件路径有什么想法吗?

  • 我的目标是开发一个单一的骆驼路线来映射这些服务器,接受路径中服务器的名称。类似于这样: 我的(简化且不起作用)Blueprint.xml: 问题是,我不知道如何从路径中移除/center、/north或/south,因此头部被传递给目标服务,而目标服务不知道如何处理它。调用: