2017-04-26 82 views
0

在我的工作中,我经常在使用VB.NET和C#编写的项目之间切换。我对单元测试相当陌生,并且一直在研究并做一些关于如何实现它的教程,但是我所能找到的所有东西都是用C#编写的(没有vb.net示例)。我使用Visual Studio 2017,所以我使用msTest进行单元测试。带参数的VB.NET单元测试

对于大多数情况下,我已经能够找出C#和VB.NET单元测试与msTest之间的语法差异,但有一个功能,我似乎无法在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#,则按预期运行。但事实是,当我构建项目时,出现以下错误:

未定义类型'DataTestMethod'。

'DataRow'不能用作属性,因为它不能从'System.Attribute'继承。

+0

你基本上是要求我们的C#转换为VB.net? – Nkosi

+0

不,我想知道在VB.NET中可以做什么,我正在用上面的C#代码做什么。简单地将方括号改为尖括号不起作用,因为VB.NET不能识别作为有效的属性。 – starx207

+0

因为您可能缺少参考资料(进口)。这只是一个语法问题。你可以在VB.net中做同样的事情,就像你在C#中做的一样。因此我之前的发言。所提供的答案完全基于问题中提供的稀少信息。 – Nkosi

回答

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 
'=======================================================