gpt4 book ai didi

java - 如何模拟父类进行单元测试

转载 作者:搜寻专家 更新时间:2023-11-01 01:28:05 25 4
gpt4 key购买 nike

所以我有三个类:A、B、C。我需要为类 A 编写单元测试。

  class A extends B{
//fields go here ...

public A(String string, ...){
super.(string,...);
}
//other methods here ...
}

class B{
C stuff;
//other stuff
}

所以 C 是一个重要的资源(如 JDBC 或 ssh Session)。当然,我在 mock C。我如何模拟 B。假设 B 有许多扩展它的子类。

我的主要问题是 A 正在调用 super.(...)。我不想将方法注入(inject) A 只是为了测试。对我来说这是糟糕的设计。有什么想法可以模拟 parent 吗?

例如,我不能执行 class MockB extends B{...} 然后尝试 MockB obj = new A(); 这不会起作用,因为 MockBA 将是 B 的子级。

最佳答案

您真的不应该尝试模拟被测类的父类(super class)。虽然一些模拟框架允许“部分模拟”,这可能使部分模拟您实际测试的类成为可能,但这是一个坏主意。

如果 A 类以及 AB 之间的关系足够复杂以至于您认为您需要它,那么它们可能不应该在完全是继承关系。

考虑更改您的代码,以便 B 委托(delegate)给 A 而不是扩展它。

关于java - 如何模拟父类进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11604555/

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