【问题标题】:C# embedding test code inside a console appC# 在控制台应用程序中嵌入测试代码
【发布时间】:2018-07-27 23:50:44
【问题描述】:

是否可以在 dotnet 核心控制台应用程序中嵌入测试代码(基于 MSTEST、NUNIT 或 XUNIT 之一)?

根据下面的教程,似乎要求测试代码必须始终是一个独立于实际项目的项目。

我了解在实际项目中嵌入测试代码的一些弊端,但我真的不想将许多内部类公开,或者到处添加 InternalTo 属性,只是为了让测试可以访问它们代码。

https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-mstest

【问题讨论】:

    标签: c# unit-testing nunit mstest xunit


    【解决方案1】:

    我总是为单元测试创​​建新项目,但您可以在控制台应用程序中进行单元测试。

    仅出于演示目的,我已将所有类添加到一个文件中。

    如果您不希望在生产环境中进行测试,可以使用#if DEBUG 和#endif 将测试类括起来。

    这样,它将在调试模式下编译并在发布模式下被忽略。

    希望这会有所帮助。

    【讨论】:

    • 如果您像我在示例中所做的那样使用 NUnit 3,您可以在 github.com/nunit/nunit-console/releases/tag/3.8 下载 NUnit 控制台工具(例如下载并解压缩 NUnit.Console-3.8.0.zip)。再次运行该工具到您的可执行文件,例如:nunit3-console.exe "D:\path_to_your_console_application\bin\Debug\ConsoleApplication1.exe"
    【解决方案2】:

    您还可以使用 NUnitLite 创建一个可执行的测试程序来运行您的测试。链接到 nunit 框架和相应版本的 nunitlite 并按照以下说明编写 Main:https://github.com/nunit/nunit/blob/master/src/NUnitFramework/nunitlite/AutoRun.cs#L34

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-07
      • 2018-05-18
      • 2019-08-17
      • 2010-12-25
      • 2012-02-14
      • 1970-01-01
      • 2019-04-26
      • 2015-08-14
      相关资源
      最近更新 更多