我正在为项目的两层编写一些单元测试,在第一层中,我有一个包含域特定逻辑的类库,第二层是应用程序一。
所以我的测试结构如下:
我正在使用NUnit 3及其适配器在Visual Studio 2015中运行测试。
我需要为两个项目都初始化一个LocalDb(出于某些不值得一提的原因)。所以我添加了一个看起来像这样的SetUpFixture:
namespace Project
{
[SetUpFixture]
public class SetUpFixture
{
[OneTimeSetUp]
public void Initialize() { ... }
}
}
最初是我为域项目所需的,该文件位于Project.Domain.Tests项目中,因此Project.Domain.Tests项目下的测试很容易到达OneTimeSetUp方法,但是问题出在Project.App.Tests上,但它们从未达到SetUpFixture OneTimeSetUp方法。
我是否缺少任何配置?还是只是我实现它的方式不支持它?
提前感谢。
SetUpFixture
的使用说明假定所有内容都在一个程序集中。一次运行一个程序集,并且仅当您进行引用时才互相引用。
当然,一个程序集可以引用另一个程序集,但是NUnit仅搜索您告诉它要运行的程序集以查找SetUpFixtureAttribute
之类的属性。
如果代码很简单,最简单的解决方法是在每个程序集中复制它。如果很复杂,建议将初始化代码放在两个测试程序集都引用的通用程序集中。然后,可以将两个SetUpFixture
简化为一个呼叫。
进一步的关注是并行性。如果您的两个安装夹具相互干扰,请确保您不告诉VS并行运行两个进程。