【问题标题】:VB.NET Unit Test with parameters带有参数的 VB.NET 单元测试
【发布时间】: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


【解决方案1】:

网上有多种服务可以用来转换代码。

例如

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

【讨论】:

    猜你喜欢
    • 2015-12-10
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多