- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对能够在运行时通过静态方法或返回 IEnumerable 的属性传递给它的构造函数参数实例化多个 testfixtures 感兴趣。
在 Nunit 2.5 中,他们引入了参数化测试和测试装置。这些允许您编写单个测试并使用 TestCase 属性提供的多个输入运行它,并编写单个测试类并分别使用不同的构造函数参数实例化它的多个实例。
除此之外,还可以使用 TestCaseSource 属性基于属性或方法的输出创建多个测试用例。这将使用实现 IEnumerable 的方法/属性的输出来创建一组测试用例,列表中的每个对象一个。这是我希望能够做到的,但在夹具级别而不是测试级别。
我的用例的一些背景:
我正在测试模拟软件,以及必须在运行任何模拟之前加载(从序列化对象)的“模拟环境”。大约有 5 种不同类型的 sim,所以我的测试类有 5 种测试方法(每种类型的 sim 一种)。我目前正在使用继承(而不是参数化装置)在几个(六个左右)模拟环境下运行测试用例,这些环境是从生产数据中获取的。
我的问题源于这样一个事实,即在最近尝试增加代码覆盖率时,我们自动生成了模拟组件的所有可能组合,从而产生了 100 多个模拟环境。我不想为其中的每一个创建继承的类,所以我使用 TestCaseSource 和一个属性,该属性返回文件夹中的所有工作区,并修改测试,以便它们(重新)加载测试本身内的 sim 环境每个测试用例。
理想情况下,我希望每个模拟环境有一个装置,并在运行时确定这些装置的数量/内容。我知道我可以通过将 sim 环境路径硬编码为 100 多个 TestFixture 属性来做前者,我可以做后者吗?
最佳答案
我通过电子邮件发送了 Nunit-Discuss list关于这一点,并从 Charlie Poole 得到以下回复.简而言之,这是不可能的,但正在研究 Nunit 的 future 版本。
Hi,
Simply stated, what you want is coming, but it's not here yet. Parameterized fixtures are (as you have discovered) limited by the fact that you can only use arguments that are permitted in attributes. We'd like to have a way that allows use of properties and methods as for test cases but fixtures are a bit more complicated, since the type may be generic.
Have you considered using a generic fixture as a workaround? You could pass in the environment as a Type (or Types) and any constructor arguments as non-type arguments. I don't know your app, so take this with a grain of salt, but how about something like...
[TestFixture(typeof(Environment1), 42, "string")]
public class TestClass<T>
{
IEnvironment env;
public TestClass(int n, string s)
{
env = new T( n, s);
}
...
}Note that this is "maillistcode" so may not work. :-)
Charlie
关于unit-testing - Nunit 参数化 TestFixtures 并在运行时设置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605567/
我正在使用 NUnit 和 NSubstitute 编写 C# 单元测试。我正在测试一个类,该类将尝试从实现以下接口(interface)的配置提供程序中检索对象: public interface
我正在NUnit中设置测试,并且有一个新手问题。 是否有可能在多个[TestFixture]中使用的测试? 所以 [测试] ValidateString(字符串鲍勃) 可以在一系列不同的[TestFi
我有一个测试类和一个如下所示的类。 public class Foo { private IDbOjbect _db; public Foo(string conn) {
我有一个测试类和一个如下所示的类。 public class Foo { private IDbOjbect _db; public Foo(string conn) {
我有一大套测试用例。 我想运行 testfixtures 中的所有测试,一次一个。在 NUnit 中批量运行它们并不能满足我的要求。 为此,我想在列表中获取所有测试用例的名称并循环遍历它们。任何指针?
我有许多测试都安排了一些 TestFixtures,我发现我正在复制该安排代码很多。每个测试的前几行几乎相同。 有没有一种方法可以在所有测试中声明一个共享的 TestFixture,同时仍然在每个测试
我想为 testFixture 设置一个 Author 并在运行时获取它以便能够在我的数据库中获取它: 这是 TestFixture 类我为 testFixture 级别设置了 Nunit 属性作者:
我在 python 中有一个多模块包。其中一个模块本质上是一个命令行应用程序。我们将其称为“顶级”模块。另一个模块中有三个类,它们本质上是应用程序的后端。 顶层模块,在它的类的初始化中,执行 logg
您如何解决您尝试定义的 TestFixture 需要引用没有无参数构造函数的类型的情况? 我正在尝试测试具有多个实现的接口(interface)。在 NUnit 文档中,它展示了如何使用这样的泛型进行
有三种组织单元测试的方法:按夹具、类或功能测试。但是 TestClass 的 NUnit 属性称为 TestFixture。这有什么历史原因吗? 最佳答案 主要的历史原因是 NUnit 最初是作为 J
对于具有 TestFixture 的类,我看不到任何行为差异。属性而不是。全部 TearDown和 SetUp以同样的方式工作。除了语义之外,这个属性使用还有什么原因吗? 最佳答案 纯粹是为了方便,从
我有一个 TestFixture 标记的类,它正在对名为“HideCurrentTitleBarMessageTask”的类的功能进行单元测试。 在这个类中,我使用替代方法在 [Setup] 方法中模
我有两个测试类,如本例所示: [TestFixture] class BaseTest { [SetUp] public void SetupMethodA() { } } [
我需要在我的 NUnit c# 应用程序中订购测试装置。我有一个关于如何从 this page 运行有序测试方法的示例,并且我尝试使用示例应用程序中提供的相同方法为测试装置实现相同的逻辑。在我们的应用
我有两个名为“TT_Common”和“TT_Container”的测试类,它们扩展了 CPPUNIT_NS::TestFixture: class TT_Common : public CPPU
我知道如何从 C# 代码运行完整的 NUnit 程序集 TestPackage testPackage = new TestPackage(assemblyName); RemoteTestRunne
我有一个测试类如下: [TestFixture("someurl1", new[] { "param1", "param2" }, 15)] [TestFixture("someurl2", new[
我对能够在运行时通过静态方法或返回 IEnumerable 的属性传递给它的构造函数参数实例化多个 testfixtures 感兴趣。 在 Nunit 2.5 中,他们引入了参数化测试和测试装置。这些
在 NUnit 中,我们可以简单地通过指定多个 [TestFixture] 属性,使用不同的参数多次运行测试夹具,每个属性都会导致类被实例化指定属性参数。 这是一个例子: [TestFixture("
我遵循示例代码here尝试设置带有用于单元测试的装置的测试MySQL数据库。我有以下代码。 func prepareTestDatabase() (*sql.DB, error) { err
我是一名优秀的程序员,十分优秀!