【发布时间】:2017-04-26 20:23:39
【问题描述】:
在我的工作中,我经常在开发用 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#,它会按预期运行。但是,当我构建项目时,我收到以下错误:
类型“DataTestMethod”未定义。
“DataRow”不能用作属性,因为它不是从“System.Attribute”继承的。
【问题讨论】:
-
你基本上是在要求我们将c#转换为VB.net?
-
不,我想知道是否可以在 VB.NET 中执行我正在使用上面的 C# 代码执行的操作。简单地将方括号更改为尖括号是行不通的,因为 VB.NET 无法将
或 识别为有效属性。 -
因为您可能缺少参考资料。(进口)。这只是语法问题。您可以在 VB.net 中执行与在 c# 中相同的操作。因此,我之前的声明。提供的答案完全基于问题中提供的稀疏信息。
-
对不起,我想我应该包含一些我正在尝试使用的代码。我只是将它添加到原始问题中。
标签: .net vb.net unit-testing mstest