C# 在控制台应用程序中嵌入测试代码
C# embedding test code inside a console app
是否可以在 dotnet 核心控制台应用程序中嵌入测试代码(基于 MSTEST、NUNIT 或 XUNIT 之一)?
根据下面的教程,似乎要求测试代码必须始终是一个独立于实际项目的项目。
我明白在实际项目中嵌入测试代码的一些缺点,但我实在不想把很多内部类转为public,或者添加InternalTo属性无处不在,只是为了让测试代码可以访问它们。
https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-mstest
我总是为单元测试创建新项目,但您可以在控制台应用程序中进行单元测试。
出于演示目的,我已将所有 类 添加到一个文件中。
如果您不想在生产环境中进行测试,可以在测试 类 周围加上 #if DEBUG 和 #endif。
这样,它将在调试模式下编译并在发布模式下被忽略。
希望对您有所帮助。
您还可以使用 NUnitLite 创建可运行测试的可执行测试程序。 Link 到 nunit 框架和相应版本的 nunitlite 并按照以下说明编写 Main:https://github.com/nunit/nunit/blob/master/src/NUnitFramework/nunitlite/AutoRun.cs#L34
是否可以在 dotnet 核心控制台应用程序中嵌入测试代码(基于 MSTEST、NUNIT 或 XUNIT 之一)?
根据下面的教程,似乎要求测试代码必须始终是一个独立于实际项目的项目。
我明白在实际项目中嵌入测试代码的一些缺点,但我实在不想把很多内部类转为public,或者添加InternalTo属性无处不在,只是为了让测试代码可以访问它们。
https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-mstest
我总是为单元测试创建新项目,但您可以在控制台应用程序中进行单元测试。
出于演示目的,我已将所有 类 添加到一个文件中。
如果您不想在生产环境中进行测试,可以在测试 类 周围加上 #if DEBUG 和 #endif。
这样,它将在调试模式下编译并在发布模式下被忽略。
希望对您有所帮助。
您还可以使用 NUnitLite 创建可运行测试的可执行测试程序。 Link 到 nunit 框架和相应版本的 nunitlite 并按照以下说明编写 Main:https://github.com/nunit/nunit/blob/master/src/NUnitFramework/nunitlite/AutoRun.cs#L34