【问题标题】:How to run simple functions in visual studio without creating form如何在 Visual Studio 中运行简单的功能而不创建表单
【发布时间】:2018-12-31 19:46:26
【问题描述】:

我知道这是一个菜鸟问题,但是如何在不创建表单的情况下在 Visual Studio 中运行简短的 vb.net 函数?我目前正在处理家庭作业问题,并想通过将它们输入到视觉工作室来仔细检查我的答案,但似乎无法弄清楚如何去做。

这是我要运行的,例如:

 Dim num as Integer = 30 

 If num > 20 Then 
     num -= 10
 If num < 20 Then 
     num *= 2 
 Else
     num /= 2 
 End if 
 Else 
 If num > 10 Then
    num += 2
 End If 
 End If 
 DisplayTextBox.Text = CStr(num) 

【问题讨论】:

  • 检查您的答案的好主意。打开选项严格。这将在设计时指出可能在运行时产生异常的潜在问题。例如n /= 2 返回一个双精度数(除法不一定是整数)并且 n 被声明为整数。
  • 如果你调用Console.WriteLine,那么你会看到指定的文本写入VS中的输出窗口。如果您使用Debug.WriteLine,那么您甚至可以保留代码,并且在编译发布版本时它将被排除在外,其中Console.WriteLine 也将包含在发布版本中。用户在正常使用时不会注意到它,但它会在那里。请注意Debug.WriteLine 的结果并不总是像Console.WriteLine 那样立即出现。为了两全其美,您可以使用条件编译。
  • 也许你应该研究一下单元测试?这是几个额外的步骤,但如果您将代码放入 (a) 单独的方法中,您可以使用它来执行不同的测试并使用 Assert 方法验证结果。您还可以为代码的不同部分定义多个/不同的测试。
  • 我很难找到一个好的单元测试介绍,但最后我设法找到了这个:stackify.com/unit-testing-basics-best-practices - 它在 C# 中,但在 VB 中的做法是相同的。它描述了如何为代码编写和运行测试的基础知识。

标签: vb.net


【解决方案1】:

为了对功能进行简单检查,我倾向于使用控制台应用程序。但是 DisplayTextBox.Text 对象是表单应用程序的一部分,所以我会使用控制台进行输出

Module Module1
    Sub Main()
        Dim num As Integer = 30
        If num > 20 Then
            num -= 10
            If num < 20 Then
                num *= 2
            Else
                num /= 2
            End If
        Else
            If num > 10 Then
                num += 2
            End If
        End If
        Console.WriteLine(num)
    End Sub
End Module

编辑添加链接

Making a console Application

【讨论】:

    【解决方案2】:

    这是一个探索使用类和编写单元测试的绝佳机会,因为这是我们编写代码并验证它在现实环境中工作的方式。对于这种情况,我通常只是在一个单元测试项目中完成所有工作。

    在 Visual Studio 中,添加一个新项目并选择 Visual Basic > 测试 > 单元测试项目(.NET Standard 或 .NET Core,无论您使用的是哪个。)

    第一步是修改您的代码,使其接收输入而不是设置num 的值。然后对其进行修改,使其返回一个值,而不是在表单上显示它。

    Module Module1
        Function DoSomethingWithNumber(num As Integer) as Integer
            If num > 20 Then
                num -= 10
                If num < 20 Then
                    num *= 2
                Else
                    num /= 2
                End If
            Else
                If num > 10 Then
                    num += 2
                End If
            End If
            Return num
        End Function
    End Module
    

    无论如何,这更接近于我们通常编写代码的方式。我们不希望执行计算的部分也将其显示在表单上,​​因为如果我们想要相同的逻辑但又不想在表单上显示它会发生什么?

    此外,在表单上显示它会使编写单元测试变得更加困难或不可能,而编写好的代码的一部分是编写我们可以编写单元测试的代码。

    现在您可以通过调用该函数、传入不同的值并验证结果是否符合您的预期来测试该函数。为此,请创建一个单元测试类,如下所示:

    <TestClass>
    Public Class MyUnitTests
        <TestMethod>
        Sub DoesSomethingWithNumber_DoesRightThingWithNumberGreaterThan20()
            Dim input As Integer = 21
            Dim output = Module1.DoSomethingWithNumber(input)
            Assert.AreEqual(22, output)
        End Sub
    
        <TestMethod>
        Sub DoesSomethingWithNumber_DoesRightThingWithNumberLessThan10()
            Dim input As Integer = 5
            Dim output = Module1.DoSomethingWithNumber(input)
            Assert.AreEqual(input, output)
        End Sub
    End Class
    

    从名称和值很明显,我真的不知道您的代码应该做什么。关键是你要给描述你正在测试的条件的测试方法名称。然后你会“断言”输出是你所期望的。

    然后,从“测试”菜单中,选择“运行”>“所有测试”。

    测试资源管理器窗口将显示哪些测试通过,哪些测试失败。如果测试断言您应该具有某个值,但您的函数返回了其他值,则测试将失败。现在你知道你的代码没有做你想做的事。您可以右键单击测试并使用断点对其进行调试,或者只是阅读代码并查看是否可以找到问题。

    这些的优点在于您可以针对多种情况进行测试。因此,如果您修复代码以解释一个预期结果,但在此过程中您破坏了其他内容,测试会告诉您。当你的所有测试都通过时,你就成功了。

    这就是我们在工作中编写代码的方式(希望如此)。有些人首先编写测试。有些人编写代码然后编写测试。但是通过这样做,我们知道我们的代码做了我们期望的事情。测试还描述了代码应该做什么。如果其他人进行了更改,他们可以运行测试并知道他们没有破坏任何东西。

    最后,学习为我们的代码编写单元测试可以提高我们编写的代码的质量。它引导我们编写更简单的代码并遵循其他最佳实践。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 2021-12-05
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      相关资源
      最近更新 更多