测试一个 NuGet 包

10

我们是NuGet的重度用户,拥有25-30个包可供网络共享使用。

我们希望在将新包构建并发布到消费应用程序之前能够测试它们。理想情况下,这可以使用类似于Maven的快照来完成,并具有特定的开发包(例如快照功能)。

还有其他人想出了什么方法吗?最好不要采用过于诡异的方式。

我们更喜欢生成包装程序集,然后手动覆盖packages/目录中的程序集,也就是替换实际项目引用,但这似乎并不十分干净。

更新:

我们使用CI构建服务器,在每次提交时创建构建,并具有特定手动触发的NuGet构建,该构建基于代码库的特定标记版本工作。我们不想在每次提交时都创建NuGet构建,但我们希望能够在手动触发NuGet包构建之前在实际环境中测试可能的候选项。

2个回答

3
我最终编写了一个单元/集成测试框架来解决类似问题。基本上,我需要验证包内容、版本和信息,安装和卸载包时会发生什么,库中的程序集版本是什么,程序集是作为什么位(x86或x64)构建的等等 - 我需要在没有安装Visual Studio的情况下,在我的构建机器(无头)上运行所有这些,并作为质量门控。

站在PesterPEToolsSharpDevelop的包管理模块等巨人的肩膀上,我组合起来 - nuget-test

  1. 将项目克隆到您的包目录中(即您的.nuspec文件和包文件所在的位置)。如果出于某种原因,您想将nuget-test项目保留为“git”存储库,则只需从下面的命令中删除“remove-item nuget-test/.git -Recurse -Force”即可。

    git clone https://github.com/nickfloyd/nuget-test.git; remove-item nuget-test/.git -Recurse -Force

  2. 在nuget-test目录的根目录中使用x86 PowerShell实例运行Setup.ps1。

    PS> .\setup.ps1

  3. 编写测试并将其放置在nuget-test/test目录中,使用Pester语法。

  4. 运行测试。

    PS> Invoke-Pester

项目页面:nuget-test
在 Github 上:https://github.com/nickfloyd/nuget-test

希望这能帮助你更接近你想完成的目标。


2
如果您使用NuGet包来分发您的库,那么您不应该仅限于测试这些库。您还应该测试这些包本身(如果您的二进制文件正确但安装不正确,则消费者仍然会遇到问题)。整个目的是为了改善这种体验。
一种方法可能是拥有一个额外的CI或QA存储库。您当前拥有的存储库实际上是您的“生产”存储库,其中包含可消耗的发布版本,被视为高质量的成品。
更进一步,您可以有一个逻辑包推广流程(基于持续集成甚至使用持续交付方法),其中: - 每次检查都会在您的CI存储库中生成一个包 - 测试人员获取CI包进行QA,如果发现OK,则将其推广到QA feed或Production feed(取决于您的测试质量以及它有多好自动化)。
有各种实现此方案的方法,可以使用简单的网络共享、内部NuGet.Server或Gallery实现,或者只需使用http://myget.org尝试一下,成本最小,零努力。
希望对您有所帮助!
祝好, Xavier

我们是一个仅供内部使用的开发团队,至少对于这个需求,我们只需要验证程序集是否正常。典型的工作流程是应用程序开发人员在包中发现了一个错误。包开发人员(可能是同一个人,也可能不是)将在包中创建测试并创建候选构建 - 但我们希望有一种优雅的方式来测试在应用程序中已经损坏的包。Maven快照或开发构建非常适合这种情况。NuGet没有任何直接可用的东西。 - Unsliced
请查看此链接[http://www.arunrana.net/2012/01/testing-nuget-package-before-publishing.html]。简单来说,您可以添加另一个软件包源(文件路径),指向您的“未发布”软件包,然后使用软件包管理器控制台从该位置安装。 - escape-llc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接