- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
场景
首先,我是测试新手 - 所以请多多包涵。在我的测试项目 中,有一个 Controllers 文件夹。 Controllers 文件夹可能包含 ControllerATest.cs、ControllerBTest.cs 和 ControllerCTest.cs。因为我的命名空间与我的文件夹结构一致,所以它们都共享命名空间 MyProject.Tests.Controllers。
根据我在 NUnit SetUpFixture Documentation 中阅读的内容, 此命名空间内的 [SetUpFixture] 将为整个命名空间运行一次。也就是说,如果我一次运行所有 Controller 测试 - SetUpFixture 将只执行一次。
问题
正如我所说,每个 Controller 测试共享一个 namespace 。 SetUpFixtures 适用于整个命名空间。如果我希望每个 Controller 都有自己的 SetUpFixture 怎么办?当 SetUpFixtures 应用于整个 namespace 时,这是一个问题。我想要的是执行一次的东西,而不是每次测试。我在 SetUpFixture 的 SetUp 中做的一件事是实例化一个 Controller 。当然,我可以在 SetUpFixture 中实例化所有 3 个 Controller ,但是当我可能只测试 ControllerC 时,这看起来很难看。那真的看起来不干净。因此,我想要一个 仅 应用于它出现的类的 SetUpFixture,例如 ControllerCTests。
据我了解,NUnit 似乎无法实现此特定功能。如果 NUnit 无法做到这一点,我认为这不是常见的情况。如果这不是常见的情况,那我做错了什么。我的问题是,什么?也许我的测试结构已经关闭,需要更改。或者 NUnit 可能吗?
代码
我想要的结构的一个例子:
namespace MyProject.Tests.Controllers
{
public class ControllerATests
{
private static IMyProjectRepository _fakeRepository;
private static ControllerA _controllerA;
[SetUpFixture]
public class before_tests_run
{
[SetUp]
public void ControllerASetup()
{
_fakeRepository = FakeRepository.Create();
_controllerA = new ControllerA(_fakeRepository);
}
}
[TestFixture]
public class when_ControllerA_index_get_action_executes
{
[Test]
public void it_does_something()
{
//
}
[Test]
public void it_does_something_else()
{
//
}
}
}
public class ControllerBTests
{
private static IMyProjectRepository _fakeRepository;
private static ControllerB _controllerB;
[SetUpFixture]
public class before_tests_run
{
[SetUp]
public void ControllerBSetup()
{
_fakeRepository = FakeRepository.Create();
_controllerB = new ControllerB(_fakeRepository);
}
}
[TestFixture]
public class when_ControllerB_index_get_action_executes
{
[Test]
public void it_does_something()
{
//
}
[Test]
public void it_does_something_else()
{
//
}
}
}
}
我尝试过的事情
建议?
最佳答案
对于 NUnit 3.4.1 及更高版本,使用 OneTimeSetUp :
[TestFixture]
public class MyTest
{
[OneTimeSetUp]
public void Setup()
{
// one time setup code for this class
}
}
顺便说一下,TestFixtureSetUp已被弃用。
关于c# - 有没有办法让 SetUpFixture 每个类运行一次而不是每个命名空间运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23158500/
场景 首先,我是测试新手 - 所以请多多包涵。在我的测试项目 中,有一个 Controllers 文件夹。 Controllers 文件夹可能包含 ControllerATest.cs、Control
在 nUnit 中,SetUpFixture 允许我在任何测试之前运行一些代码。使用 xUnit 时有没有类似的东西? From nUnit documentation : This is the a
我目前正在使用 C#、nunit 和 Selenium 构建一个自动化项目,我正在尝试拥有一个安装类,它将在任何 TestFixture 之前初始化 selenium webdriver将运行并且在所
nUnit SetupFixture Reference 我的解决方案是这样设置的,使用 SpecFlow Gherkin 功能 解决方案 - 测试项目 -- 特点 -- 步骤 - 页面项目 -- 页
我正在尝试重新组织我们拥有的一些集成测试,以便它们使用一个公共(public)类来创建数据库和数据库中所需的数据,以使用 [SetUpFixture] NUnit 属性在同一程序集中的其他类中进行测试
我刚刚开始使用 Selenium Webdriver 及其 EventFiring,以便我可以将驱动程序抛出的任何异常记录到文件或电子邮件等中。 我已经让 Log4Net 正常工作,并且我的单元测试在
我在 Nunit 3 测试用例中陷入了奇怪的情况,我在 [SetUpFixture] 中的 [OneTimeSetUp] 在 [Test, TestCaseSource(typeof(TestData
我是一名优秀的程序员,十分优秀!