gpt4 book ai didi

java - 对文件存在的不同行为进行单元测试

转载 作者:行者123 更新时间:2023-12-02 12:09:38 25 4
gpt4 key购买 nike

在某些情况下,软件会根据某些环境条件而表现不同,例如文件是否存在于某个地方。

就我而言,我正在开发一个库,它是根据类路径中的配置文件进行配置的(如果配置文件不存在,则返回到默认行为)。

我该如何对这个类进行单元测试?我需要编写测试来评估以下情况下的类:

  • 类路径上不存在该文件
  • 内容为 A 的文件存在于类路径中
  • 类路径中存在内容为 B 的文件

但我不知道如何配置环境来证明所有这些都是合理的。并依次执行测试。

顺便说一下,我使用的是 Java,并且测试类路径上有 JUnit 和 TestNG。

<小时/>

编辑:问题之一是配置文件驻留在类路径中,因此如果普通的类加载器找到并加载它,只要使用相同的类加载器,它就会返回相同的内容。而且我相信使用自定义类加载器进行测试非常复杂,需要测试来验证测试!

最佳答案

您可以使用测试创建的临时文件来模拟类中的路径。

配置测试.java:

import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.junit.Assume.assumeThat;

import java.nio.file.Files;
import org.junit.Test;

public class ConfigurationTest {

private Configuration config = new Configuration();

@Test
public void testWithConfigFile() throws Exception {
config.configFile = Files.createTempFile("config_",".ini");
config.configFile.toFile().deleteOnExit();
assertFalse(config.isInDefaultMode());
}
@Test
public void testWithoutConfigFile() throws Exception {
assumeThat(Files.exists(config.configFile), is(false));
assertTrue(config.isInDefaultMode());
}
}

配置.java:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Configuration {

Path configFile = Paths.get("config.ini");

public boolean isInDefaultMode() {
return !Files.exists(configFile);
}
}

关于java - 对文件存在的不同行为进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46633248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com