Nunit 使用来自基本测试夹具isn'的AutoData进行测试;跑不动

Nunit 使用来自基本测试夹具isn'的AutoData进行测试;跑不动,nunit,autofixture,Nunit,Autofixture,我使用Autofixture 3.21.0和Autofixture.NUnit2 3.21.0以及NUnit 2.6.3和Resharper 8.2.3 runner 我已经实现了通用的基本测试夹具,它包含几个生产类的一组公共测试。大致如下: [TestFixture] 公共类TestsBase { [测试] 基本类()中的公共无效测试 { Assert.Pass(); } [测试,自动数据] 带有自动数据(T obj)的基本类中的公共无效测试 { //此测试未运行!!! Assert.NotN

我使用Autofixture 3.21.0和Autofixture.NUnit2 3.21.0以及NUnit 2.6.3和Resharper 8.2.3 runner

我已经实现了通用的基本测试夹具,它包含几个生产类的一组公共测试。大致如下:

[TestFixture]
公共类TestsBase
{
[测试]
基本类()中的公共无效测试
{
Assert.Pass();
}
[测试,自动数据]
带有自动数据(T obj)的基本类中的公共无效测试
{
//此测试未运行!!!
Assert.NotNull(obj);
}
}
从基本测试夹具类继承的一个示例具体测试夹具类可以实现如下所示:

[TestFixture]
公共类派生测试:TestsBase
{
[测试]
派生类()中的公共无效测试
{
Assert.Pass();
}
[测试,自动数据]
带有自动数据(字符串obj)的派生类中的公共无效测试
{
Assert.NotNull(obj);
}
}
当我使用R#8.2.3 runner运行这个派生的测试夹具时,不会运行来自基类的测试方法,该基类的属性为AutoDataAttribute(在_base_class_中命名为test_,属性为_autodata)。所有其他测试方法都会按预期调用,但来自具有AutoDataAttribute的基类的测试方法除外


你也有同样的问题吗?是AutoFixture.Nunit2错误吗?这个问题有解决办法吗?请寻求帮助。

顺便说一句,这里有解决办法。我们可以使用NUnit的参数化TestFixtureAttribute(即[TestFixture(typeof(string))]作为基类fixture),而不是使用fixture继承。缺点是,在这种方法中,我们必须为几种类型维护两个测试夹具类(一个类用于通用测试方法,一个类用于专用测试方法)。所以在我看来,在这种情况下,继承可能导致更简洁的解决方案。不管怎样,如果知道我们是否遇到过AutoFixture bug或故意行为,那就太好了。新版本已经在AutoFixture的GitHub主页上打开。