假设我想为一个方法或类编写一个单元测试,以确保该方法的源代码不会调用某个 Java API 方法(在本例中为Arrays.sort
)。这甚至可能吗?我想要这样做的原因是因为我想提出自动测试,以检测是否Arrays.sort
已从特定类的特定方法内的任何地方调用,在这种情况下,我希望相关测试失败。不幸的是,基于文本的方法完全不能令人满意,例如,它还会从源代码注释中捕获对 Arrays.sort 的潜在引用。任何帮助表示赞赏。
问问题
87 次
1 回答
0
您可以通过创建用于排序的接口和使用 Arrays.sort 的实现来实现
public interface SortUtil {}
public class SortUtilImpl implements SortUtil {
public void sort(Collection c) {
Arrays.sort(c);
}
}
现在您必须使用“客户端”类中的接口进行排序。对于单元测试,用测试模拟替换真正的实现。喜欢:
public SortUtilMock implements SortUtil {
public void sort( Collection c) {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
//... here you check if the sort is called by a forbidden method
}
}
最好的问候, 齐德
于 2013-11-02T23:52:19.417 回答