相关疑难解决方法(0)

获取系统属性的Mock System类

我不得不通过在Eclipse的JVM参数系统变量设定的文件夹路径,我试图访问它在我的课为: System.getProperty("my_files_path").

在为这个类编写junit测试方法时,我尝试模拟这个调用,因为测试类不考虑JVM参数.我已经使用PowerMockito来模拟静态System类,并尝试System.getProperpty在调用时返回一些路径.

在课堂上有注释@RunWith(PowerMockRunner.class)@PrepareForTest(System.class)注释.但是,System类没有被模拟,因此我总是得到null结果.任何帮助表示赞赏.

java system mocking environment-variables powermock

10
推荐指数
4
解决办法
3万
查看次数

尝试模拟 java.lang.System 时发生 MockitoException

我有一个模拟类的静态方法的测试用例java.lang.System

@Test
fun `getLocalTime()`() {
    // Arrange
    val staticMock = Mockito.mockStatic(System::class.java)
    Mockito.`when`(System.currentTimeMillis()).thenReturn(1000L)

    // Action
    val res = deviceTimeProvider.getLocalTime()

    // Assert
    Truth.assertThat(res).isEqualTo(1000L)

    staticMock.close()
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行测试时,我得到了这个错误:

org.mockito.exceptions.base.MockitoException:不可能模拟 java.lang.System 的静态方法以避免干扰类加载,从而导致无限循环

为什么会出现这种情况?我如何模拟java.lang.System类的方法?

java android unit-testing mocking mockito

7
推荐指数
1
解决办法
1万
查看次数

在junit中模拟System.getenv调用时遇到麻烦

我正在尝试为Spring Boot应用程序使用junit和mockito(对此非常新)编写单元测试。基本上,在我的代码中,我为manifest.yml文件(用于部署)中的特定URL指定了一个环境变量,可以String URL = System.getenv("VARIABLE")在我的代码中访问该变量。但是,由于URL变量显然未定义,因此我在单元测试中遇到了很多麻烦。我在这里尝试了该解决方案,但是意识到这仅用于模拟环境变量(如果您从实际测试本身调用它),而不是如果您依赖于可从代码访问的环境变量。

有什么方法可以设置它,以便在运行测试时可以设置可以在代码中访问的环境变量?

java junit unit-testing

5
推荐指数
1
解决办法
4871
查看次数