我正在为项目的两层编写一些单元测试,在第一层中,我有一个包含领域特定逻辑的类库,第二层是应用程序。
所以我的测试结构如下:
我正在使用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 方法。 >
我缺少任何配置吗?还是我实现它的方式不支持它?
谢谢。
答案 0 :(得分:0)
使用SetUpFixture
的说明假定所有内容都在一个程序集中。程序集每次运行一次,并且只有在进行引用后才能相互引用。
当然,一个程序集可以引用另一个程序集,但是NUnit仅在您告诉其运行的程序集中搜索诸如SetUpFixtureAttribute
之类的属性。
如果代码很简单,最简单的解决方法是在每个程序集中复制它。如果很复杂,建议将初始化代码放在两个测试程序集都引用的通用程序集中。然后,可以将两个SetUpFixture
减少为一个呼叫。
进一步的关注是并行性。如果您的两个安装夹具相互干扰,那么请确保您不告诉VS并行运行这两个进程。