是否可以在项目外访问SetUpFixture?

问题描述 投票:1回答:1

我正在为项目的两层编写一些单元测试,在第一层中,我有一个包含域特定逻辑的类库,第二层是应用程序一。

所以我的测试结构如下:

  • Project.App.Tests(单元测试项目)
    • TestClass1
    • ...
    • TestClassN
  • Project.Domain.Tests(单元测试项目)
    • TestClass1
    • ...
    • TestClassN

我正在使用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方法。

我是否缺少任何配置?还是只是我实现它的方式不支持它?

提前感谢。

c# visual-studio unit-testing nunit nunit-3.0
1个回答
0
投票

SetUpFixture的使用说明假定所有内容都在一个程序集中。一次运行一个程序集,并且仅当您进行引用时才互相引用。

当然,一个程序集可以引用另一个程序集,但是NUnit仅搜索您告诉它要运行的程序集以查找SetUpFixtureAttribute之类的属性。

如果代码很简单,最简单的解决方法是在每个程序集中复制它。如果很复杂,建议将初始化代码放在两个测试程序集都引用的通用程序集中。然后,可以将两个SetUpFixture简化为一个呼叫。

进一步的关注是并行性。如果您的两个安装夹具相互干扰,请确保您不告诉VS并行运行两个进程。

© www.soinside.com 2019 - 2024. All rights reserved.