1

我们有一些现有的静态方法,它们分组在 VB 模块中。

我想向公司介绍单元测试,并且正在研究使用 NUnit 和 NSubstitute。

我似乎无法为我想要测试的 VB 模块创建一个替代品,或者找到任何如何做到这一点的示例。我正在尝试做类似的事情:

Dim Sub = Substitute.For(MyModule)()

但 VB 告诉我“MyModule 是一种类型,不能用作表达式”。

如果我尝试

Dim Sub = Substitute.For(Of MyModule)()

VB 告诉我'Module 'MyModule' 不能用作类型'。

我的语法错误还是我想做一些愚蠢的事情?

4

2 回答 2

1

使用模拟框架对模块和共享方法(C# 中的静态类和方法)进行单元测试是不合适的,因为:

  • 模块(C# 中的静态类)不能:
    • 从基类继承
    • 实现接口
    • 因此,被嘲笑
  • 无法调用模拟实例中的共享方法(C# 中的静态方法)

因此,要使用共享方法对模块或类进行单元测试,您需要直接进行。示例:(单元测试属性省略...)

Public Class A
    Public Shared Function Go(a As Integer) As Integer
        Return a + 10
    End Function
End Class

Public Class TestClass
    Public Sub Test()
        Assert.AreEqual(A.Go(5), 15)
    End Sub
End Class
于 2013-08-29T22:25:19.357 回答
0

确保您在接口中发送,并且我不会使用变量名作为 Sub,因为它是保留类型。

示例 Dim fakeWebRequestService = Substitute.For(Of IWebRequestService)()

于 2015-07-24T10:16:01.667 回答