代码之家  ›  专栏  ›  技术社区  ›  valik

从类路径获取文件,以便测试可以在所有计算机上运行

  •  1
  • valik  · 技术社区  · 7 年前

    我正在使用Vertx并尝试测试一些参数,这些参数是我从JSonfile获取的数据,目前它可以工作,但我希望通过类路径获取该文件,以便可以从其他计算机测试它。

    private ConfigRetriever getConfigRetriever() {
        ConfigStoreOptions fileStore = new ConfigStoreOptions().setType("file").setOptional(true)
                .setConfig(new JsonObject()
                    .put("path", "/home/user/MyProjects/MicroserviceBoilerPlate/src/test/resources/local_file.json"));
        ConfigStoreOptions sysPropsStore = new ConfigStoreOptions().setType("sys");
        ConfigRetrieverOptions options = new ConfigRetrieverOptions().addStore(fileStore).addStore(sysPropsStore);
        return ConfigRetriever.create(Vertx.vertx(), options);
    }
    

    上面写的路径是从/home/dir开始的,这使得在另一台机器上测试是不可能的。下面的测试使用此配置

    @Test
    public void tourTypes() {
        ConfigRetriever retriever = getConfigRetriever();
    
        retriever.getConfig(ar -> {
            if (ar.failed()) {
                // Failed to retrieve the configuration
            } else {
                JsonObject config = ar.result();
    
                List<String> extractedIds = YubiParserServiceCustomImplTest.getQueryParameters(config, "tourTypes");
                assertEquals(asList("1", "2", "3", "6"), extractedIds);
            }
        });
    }
    

    我想使路径成为类路径,这样我就可以在所有环境中测试它。 我试图访问这样的类路径,但不确定应该如何访问

    private void fileFinder() {
        Path p1 = Paths.get("/test/resources/local_file.json");
        Path fileName = p1.getFileName();
    }
    
    3 回复  |  直到 7 年前
        1
  •  3
  •   Elio    7 年前

    "src/test/resources"

    InputStream confFile = getClass().getResourceAsStream("/local_file.json");

    URL url = getClass().getResource("/local_file.json");

    example

        2
  •  2
  •   alaster    7 年前

    /resources here an example ClassLoader.getResourceAsStream

    InputStream configFile = ClassLoader.getResourceAsStream("path/to/file.json");
    JsonObject config = new JsonParser().parse(configFile);
    // Then provide this config to Vertx
    
        3
  •  2
  •   Konrad Botor    7 年前

    .setConfig(new JsonObject().put("path", "local_file.json"));
    

    this