java - 如何使用 JUnit 测试特定于操作系统的方法?

标签 java unit-testing junit

我想用 JUnit 测试以下方法:

private static boolean systemIsWindows() {
    String os = System.getProperty("os.name").toLowerCase();
    return os.startsWith("win");
}

坦率地说,我唯一想到的就是基本上将相同的逻辑复制到测试中。当然,这可以防止该方法被无意中破坏,但听起来有点违反直觉。

测试此方法的更好方法是什么?

最佳答案

在单元测试中,您可以更改属性的值:

System.setProperty("os.name", "Linux")

之后,您可以测试/调用您的 systemIsWindows() 方法,以检查它使用断言返回的内容。

为了更轻松地设置系统属性并在测试完成时取消设置该属性(从而促进测试隔离、 self 包含),您可以使用以下任一 JUnit 附加组件:

例如:

@Test
@SystemProperty(name = "os.name", value = "Windows")
public void aTest() {
    assertThat(systemIsWindows(), is(true));
}


@Test
@SystemProperty(name = "os.name", value = "MacOs")
public void aTest() {
    assertThat(systemIsWindows(), is(false));
}

关于java - 如何使用 JUnit 测试特定于操作系统的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58588210/

相关文章:

java - 如何转换 Java Web 应用程序以在 Google App Engine 上部署

python - 如何测试python中模拟调用的值是否在可能值的范围内

android - 用于 fragment 的 JUnit

java - 解析 JSON 并转换为对象列表

java - java中如何使用ArrayList添加元素?

java - 如何检查所有线程是否被中断

Python Unittest - 如果assertEqual 那么?

unit-testing - 如何对 Xtext 进行单元测试

java - JUNIT Autowired 实例始终为 null

java - 在 JUnit 和 TestNG 等测试框架中,测试执行监听器的典型用例是什么?