【问题标题】:ICollectionFixture functionality on test in different classes in different projects in a solutionICollectionFixture 功能在解决方案中不同项目的不同类中进行测试
【发布时间】:2019-03-01 06:26:47
【问题描述】:

我正在尝试在 Visual Studio 解决方案中为我的所有测试实施 ICollectionFixture。在解决方案中,开发人员有不同的服务项目和不同的测试项目。我想设置一个在不同项目中的所有测试之前运行一次的启动方法。我遇到了 ICollectionFixture 但我认为它仅适用于同一项目中的不同类?我对此的理解正确吗?如果我是正确的并且我不能使用 ICollectionFixture,我可以使用什么?

【问题讨论】:

  • 您应该详细说明您认为需要这种确切机制的内容/原因 - 通常有 different ways to meet a goal 可以得到帮助。
  • @RubenBartelink 我的测试需要访问使用 ps1 脚本生成的本地 postgres 实例。如果没有运行测试失败。所以目前我们在一天开始时手动运行powershell脚本。而是让这个设置在测试运行开始时运行,这样我们就不必每天早上手动记住启动它。

标签: c# xunit.net


【解决方案1】:

xUnit 不提供“在所有测试之前”挂钩。一般来说,Class 和 Collection Fixture 机制是您建议的唯一途径。

另一个是使用static 变量来保存状态的缓存版本。

【讨论】:

  • 我最终所做的只是为每个测试类项目加载一个 ICollectionFixture。这不是最好的,但我的方法现在只为每个测试项目运行一次,而不是项目中的每个测试。所以不是运行超过 500 次,而是运行 6 次。
  • 一般来说,最好让每个测试对它的先决条件负责。虽然使用 collectionfixture 将确保一次检查并保证前提条件,但其代价是一次只有一个测试类可以使用它。如果您改为将其作为显式代码执行,那么您需要一种方法使其仅运行一次this is one way to manage that。话虽如此,如果它对你有用,那就太好了
  • 我对其他因素持开放态度...我会调查您提供的参考资料。所以我希望它像原帖中提到的那样作为一个击球手退出者,希望这个参考可以引导我实现这个目标。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多