gpt4 book ai didi

java - 如何通过 PowerMockito 模拟 String#equals 方法

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

我有一个包含字符串比较的方法:

if (stringA.equals(stringB)) { ... }

在单元测试中,我尝试了:

String stringA = PowerMockito.mock(String.class);
String stringB = PowerMockito.mock(String.class);
when(stringA.equals(stringB)).thenReturn(false);

但这实际上会返回 true。谁能告诉我如何通过 PowerMockito 模拟 String#equals 方法?谢谢。

最佳答案

除此之外,模拟 final 方法很难;特别是当您尝试操作 java.lang.String 这样的核心类时;这里的真实点具有不同的性质:重写 String.equals() 进行测试是完全错误的。

简单地说:如果您的逻辑依赖于比较两个对象,那么您应该专注于提出一种设计,允许您注入(inject)至少这两个值之一 - 而不是使用 dirty dirty黑客操纵相应 equals 方法的内部!

但是,如果您的设计认为您需要 PowerMockito 才能使其可测试(通过覆盖 String.equals())方法;最有可能的是:您一开始只是创建了无法测试的代码。

这就是我的“不回答”。退出当前的方法,看看这些 videos学习如何编写可测试代码;然后回来重新设计您的设计。

人们常常会创造出破损的设计;然后他们假设 PowerMock(ito) 是“修复”损坏设计后果的方法。很多时候,情况正好相反:如果您认为需要 PowerMock(ito),那么您的设计应该重新设计。

关于java - 如何通过 PowerMockito 模拟 String#equals 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40698326/

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