带参数的VB.NET单元测试

时间:2017-04-26 20:23:40

标签: .net vb.net unit-testing mstest

在我的工作中,我经常在开发用VB.NET编写的项目和C#之间切换。我是单位测试的新手,我一直在研究和做一些关于如何实现它的教程,但我能找到的所有东西都是用C#编写的(没有vb.net的例子) )。我使用Visual Studio 2017,因此我使用msTest进行单元测试。

在大多数情况下,我已经能够找出使用msTest进行C#和vb.net单元测试之间的语法差异,但是有一个我无法理解的功能。 vb.net。在C#中你可以这样做:

[DataTestMethod]
[DataRow(1)]
[DataRow(2)]
[DataRow(3)]
public void unitTest(int n) {
    // Test code here
}

这允许您为多个值运行相同的测试。我无法找到vb.net的等效语法。甚至有办法在vb.net中这样做吗?

提前致谢!

修改 以下是我的单元测试类的设置方式以及我希望实现的目标:

Imports System
Imports Microsoft.VisualStudio.TestTools.UnitTesting

<TextClass()> Public Class MyUnitTests

    <DataTestMethod()> _
    <DataRow(1)> _
    <DataRow(2)> _
    <DataRow(3)> _
    Public Sub IsValueLessThanTwo(ByVal n as Integer)
        Assert.IsTrue(n < 2, $"{n} is not less than 2")
    End Sub

End Class

我希望这个测试运行3次并在值为1时传递但在值为2或3时失败。如果我将其转换为C#,它将按预期运行。但是,当我构建项目时,我得到以下错误:

  

输入&#39; DataTestMethod&#39;没有定义。

     

&#39;的DataRow&#39;不能用作属性,因为它不会继承自System.Attribute&#39;。

1 个答案:

答案 0 :(得分:0)

在线有多种服务可用于转换代码。

例如

Convert Code by Telerik

<DataTestMethod> _
<DataRow(1)> _
<DataRow(2)> _
<DataRow(3)> _
Public Sub unitTest(n As Integer)
    ' Test code here
End Sub

'=======================================================
'Service provided by Telerik (www.telerik.com)
'Conversion powered by NRefactory.
'Twitter: @telerik
'Facebook: facebook.com/telerik
'=======================================================