2017-04-26 65 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 
'=======================================================