【问题标题】:Mocking System.getenv other than with powermock使用 powermock 模拟 System.getenv
【发布时间】:2018-09-04 08:57:13
【问题描述】:

考虑问题https://stackoverflow.com/a/51980599/7203487。 类中的方法中只有一个方法包含需要模拟的 System.getenv。问题是我需要采用 jacoco 代码覆盖率,由于使用 powemock,我得到的覆盖率为 0%。有没有办法在有或没有 powermock 的情况下模拟系统并获得代码覆盖率?

【问题讨论】:

    标签: java junit powermockito


    【解决方案1】:

    查看 JUnit 4 的 System Rules,尤其是 EnvironmentVariables

    public class EnvironmentVariablesTest {
    
      @Rule
      public final EnvironmentVariables environmentVariables = new EnvironmentVariables();
    
      @Test
      public void setEnvironmentVariable() {
        environmentVariables.set("name", "value");
        assertEquals("value", System.getenv("name"));
      }
    }
    

    【讨论】:

    • 超级。我以前从来不知道!感谢分享
    • @t-d 主要问题是库不稳定,我的构建经常失败
    • 我有一个版本为 1.19.0 的构建,它可以工作。你能附上错误的构建日志吗?
    • 等等..上面是第三方库吗?是指您自己的自定义库还是在 Junit 中内置?
    【解决方案2】:

    添加到@Roland Weisleder。

    EnvironmnetVariables 不是 junit 的一部分。您需要添加以下依赖项

    https://stefanbirkner.github.io/system-rules/download.html

    <dependency>
      <groupId>com.github.stefanbirkner</groupId>
      <artifactId>system-rules</artifactId>
      <version>1.19.0</version>
      <scope>test</scope>
    </dependency>
    

    【讨论】:

    • 他已经添加了系统规则的链接。答案已被接受。
    • 谢谢@T D .. 我在想 Ronald 代码是内置在 junit 中的......我一直在寻找 JUNIT 中内置的东西......不是每个人都可以奢侈地添加第三方库。 .特别是如果你为别人工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多