如果我错了请纠正我,但看起来Moq只能模拟一个公共类,它有一个公共的无参数构造函数,要模拟的方法是public virtual
。我并不想让这些类公开可见。我是不是错过了一些与Moq的东西,或者只是不适合我想做的事情?
我想我可以创建一个ClassB实现的接口(例如“ICLASSB”),将其注入ClassA,并模拟该接口。ClassB仍然可以是内部的(尽管我意识到接口方法必须是公共的)。虽然这可以工作,但我对创建大量接口感到不安,这些接口的唯一目的是支持单元测试模拟。思想?
通过在项目的Assembly.cs中添加InternalsVisibleToAttribute
,可以使内部对Moq可见,如下所示:
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
为什么“DynamicProxygenAssembly2”
而不是“Moq”
?它是为包含动态生成的代理类型而创建的动态程序集的名称(所有这些都由MoQ使用的另一个库Castle的DynamicProxy处理)。因此,您将类型公开给动态代理程序集,而不是Moq本身。
但是,如果没有可重写的成员,那么嘲笑类又有什么意义呢?您不会模仿任何东西,所有调用都将使用实际实现。你的第二个解决方案,
问题内容: 我正在尝试为一些依赖WifiManager和返回的ScanResults的类实现一些单元测试。我想做的是能够控制我收到的ScanResults,以测试各种不同的条件。 不幸的是,对我来说,成功模拟WifiManager非常困难(尽管我想我可以在MockWifiManager中传递其构造函数null引用)。这只是我的第一个问题,因为一旦我有一个MockWifiManager可以玩(如果它
我试图用模拟的dbcontext为我的服务创建一个单元测试。我创建了一个接口,具有以下函数:
我有一个示例方法(我需要编写测试用例)如下所示, 我想模拟getConfig方法并返回一个特定的字符串值。getConfig是Kotlin对象中方法,如下所示, 下面是我尝试的测试 我没有得到任何错误,但是getConfig方法没有被嘲笑。执行实际的实现。我也试过使用Powermockito。请帮帮我
问题内容: 我在解决如何使用Apache Mina时遇到了一些麻烦。他们的文档对于我那才华横溢的大脑来说有点乏味。我在Java SFTP服务器库中看到了有用的起始代码 吗? 我不知道如何使用它。我想使用Mina作为一种模拟服务器来设置检查我的sftp代码的单元测试,即能够编写如下单元测试: 问题是要放入什么。 我一直在浏览测试代码,想知道是否需要在上面进行更多配置以指定根目录,用户名和身份验证密钥
所以我有三个类:A、B、C。我需要为类编写单元测试。 因此,C是一种重要的资源(如JDBC或ssh会话)。当然,我在嘲笑C。如何模拟B。想象一下,B有许多扩展它的子类。 我的主要问题是A正在调用super。(...) 。我不想仅仅为了测试而将方法注入到A中。对我来说,这是个糟糕的设计。有没有办法嘲笑父母? 例如,我不能执行类MockB扩展B{…} 然后尝试
我用Mockito进行了Java测试: Kotlin.TypeCastException:null不能强制转换为非null类型java.util.HashMap 如何正确模拟属性?