gpt4 book ai didi

java - 将工作委托(delegate)给其他人的单元测试类的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:01 24 4
gpt4 key购买 nike

我有一个关于如何最好地处理顶级类的 JUnit 测试的问题。假设我有一个类 SomeWriter,它有一个方法可以重新格式化 String 并将其写入流。该方法实际上并不执行工作,而是将其委托(delegate)给实际执行实际工作的成员对象。我在下面的类(class)中总结了这一点。

public class SomeWriter {
public void writeReformattedDataToStream(OutputStream outStream, String message) {
myReformatter.DoTheActualWorkAndWriteDataToStream(outStream, message);
}
}

现在,在这个假设的示例中,我已经为 myReformatter 类编写了单元测试,并且我已经证明了 myReformatter 的工作原理。我的问题是,我应该如何处理 SomeWriter 中 writeReformattedDataToStream 的单元测试?

如果我进行黑盒测试,我将需要编写与应用于 myReformatter 类相同的测试,因为我不知道它是如何实现任务的。然而,单元测试实际上是白盒测试,是否仅仅为了确保 myReformatter 被正确调用而对测试有效?

底线是我对 writeReformattedDataToStream 的测试应该有效地重复 myReformatter 的测试,还是模拟 myReformatter 并检查它是否被正确调用?

我很欣赏这类似于 JUnit Test - Class invokes methods in other class

最佳答案

像这样的立即委托(delegate)通常属于“太简单而无法测试”的标题,但是如果您对它有一些绝对要求,那么您需要模拟您的 OutputStream(使用 EasyMock 或类似的工具)和 myReformatter 并验证委托(delegate)是否调用了适当的方法。

关于java - 将工作委托(delegate)给其他人的单元测试类的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18714489/

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