c# - 使用我的 NuGet 包分发可重用测试类有哪些选项?

标签 c# .net visual-studio unit-testing nuget

我目前有一个包含两个项目的解决方案设置:

MySolution
- MyClassLibrary
- MyClassLibrary.Tests

MyClassLibrary 项目作为 NuGet 包分发。 Tests 项目包含我的所有单元测试,这些单元测试当前未随 NuGet 包一起分发。

问题是在 MyClassLibrary 内部,我的一个类接受 IMyRepository 作为构造函数参数(以允许依赖注入(inject))。然后,我在名为 IMyRepositoryTests 的 MyClassLibrary.Tests 项目中设置了一个抽象测试类。目的是当您编写自己的 IMyRepository 实现时,您可以编写一个简单地继承 IMyRepositoryTests 的测试类并传入具体类的实例,所有测试都会为您完成。

所以结构看起来是这样的:

Solution
- MyClassLibrary
-- MyServiceClass(IMyRepository repository)
-- IMyRepository
- MyClassLibrary.Tests
-- MySericeClassTests
-- IMyRepostoryTests (abstract)

问题是测试项目没有随 NuGet 包一起分发,所以如果有人想对他们的 IMyRepository 的具体实现进行单元测试,他们将不得不编写他们自己的所有测试,其中 (1) 不会采用利用我已经为他们编写的测试代码,并且 (2) 可能不符合我为 IMyRepository 设计的规范。

如果我将 IMyRepositoryTests 移动到 MyClassLibrary 项目,那么该项目将依赖于我的单元测试框架(Xunit 和 Moq)。这为不进行单元测试的人增加了不必要的依赖。

如果我将测试项目与 NuGet 包一起发布,那么我会产生同样的问题,而且将 NuGet 包与它们的单元测试一起发布似乎不是标准做法。

我可以将测试项目作为单独的 NuGet 包发布,但这看起来也很奇怪。

我还缺少其他选项吗?

最佳答案

为您的测试程序集创建一个单独的包。您需要这样做,因为您的最终用户不希望将它包含在他们的主应用程序中,如果您将测试程序集与主程序集放在一起,就会发生这种情况。

关于c# - 使用我的 NuGet 包分发可重用测试类有哪些选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28590671/

相关文章:

c# - 无法使用 WMI 终止进程,但 taskkill 可以工作

c# - 如何使 SqlDataReader.ReadAsync() 异步运行?

c# - .net 的 Selenium 测试覆盖率(C# 和 VB)

c# - 不同值类型之间的除以零行为不一致

vb.net - Windows 窗体的外观

c# - 在 WP8 的 TextBox 控件中打字更快

c# - 分配 Session 变量/值时出现 NullReferenceException

c# - 使用 HttpCookieCollection 和 CookieContainer 发送 cookie

visual-studio - Visual Studio Community 版本 2015 和 2017 中缺少 CodeLens 引用计数

c++ - 如何声明具有特定大小的多维数组?