gpt4 book ai didi

java - 没有 JUnit 的 Powermock

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

为了从遗留应用程序中提取一些数据,我目前使用 powermock 来准备一些相当困惑的类,并用模拟替换一些依赖项。

因此,我有一个 JUnit 测试,其本质上是:

@RunWith(PowerMockRunner.class)
@PrepareForTest(LegacyDependency.class)
public class ThisIsNotReallyATest {
@Test
public void extractData() {
... prepare and wire mocks

// new ClassUnderTest() will essentally call LegacyDependency.getInstance()
Object result = new ClassUnderTest().doSomething();
// save result for later reference
}
}

因此:这不是测试。这是一个实用程序类,它使用 Powermock 功能来解决各种错误建模的依赖项。

使用测试框架创建一个与单元测试无关的实用程序让我感觉很糟糕,问题是:

我可以在独立软件中使用 powermock(尤其是静态/最终/等的PrepareForTest 功能)吗?如果是这样:怎么办?

最佳答案

恕我直言,问题是 X/Y problem ,但是

假设 ClassUnderTest 的构造函数是:

ClassUnderTest() {
this.legacyDep = LegacyDependency.getInstance();
// ...
}

并且您不想要某些 LegacyDependency 行为,你可以像这样进行一些重构:

// you can provide your own "LegacyDependency" that does nothing or something
ClassUnderTest(LegacyDependency legacyDep) {
this.legacyDep = legacyDep;
// ...
}

// old way
ClassUnderTest() {
this(LegacyDependency.getInstance());
// ...
}

关于java - 没有 JUnit 的 Powermock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41757541/

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