Unit testing 我应该在哪里测试抽象类上的方法?

Unit testing 我应该在哪里测试抽象类上的方法?,unit-testing,Unit Testing,我有一个抽象类,它定义了一些方法。这个类有两个子类 我应该仅仅为了测试而创建一个伪子类,还是应该通过子类的测试来测试方法?通过子类进行测试似乎更自然,但是我必须在两个子类的测试之间复制测试代码 你们怎么看?你们不必复制测试代码——你们可以编写测试方法,让它们接受一个参数 由于大多数测试框架不支持采用参数的测试,您可以添加一个小包装器,用特定实例调用您的参数化测试方法。现在,您可以很容易地选择只调用一次特定基类的测试是否有意义,或者对同一方法进行多个测试—每个可能的基类一个测试。因为每个新的测试只

我有一个抽象类,它定义了一些方法。这个类有两个子类

我应该仅仅为了测试而创建一个伪子类,还是应该通过子类的测试来测试方法?通过子类进行测试似乎更自然,但是我必须在两个子类的测试之间复制测试代码


你们怎么看?

你们不必复制测试代码——你们可以编写测试方法,让它们接受一个参数

由于大多数测试框架不支持采用参数的测试,您可以添加一个小包装器,用特定实例调用您的参数化测试方法。现在,您可以很容易地选择只调用一次特定基类的测试是否有意义,或者对同一方法进行多个测试—每个可能的基类一个测试。因为每个新的测试只需要添加一个薄包装器,所以几乎没有代码重复

void TestSomething(AbstractClass foo)
{
    // Your test code goes here.
    Assert.AreEqual(42, foo.Bar());
}

[Test]
void TestSomethingFoo1()
{
    TestSomething(new Foo1());
}

[Test]
void TestSomethingFoo2()
{
    TestSomething(new Foo2());
}

您不必复制您的测试代码-您可以编写您的测试方法,以便它们接受参数

由于大多数测试框架不支持采用参数的测试,您可以添加一个小包装器,用特定实例调用您的参数化测试方法。现在,您可以很容易地选择只调用一次特定基类的测试是否有意义,或者对同一方法进行多个测试—每个可能的基类一个测试。因为每个新的测试只需要添加一个薄包装器,所以几乎没有代码重复

void TestSomething(AbstractClass foo)
{
    // Your test code goes here.
    Assert.AreEqual(42, foo.Bar());
}

[Test]
void TestSomethingFoo1()
{
    TestSomething(new Foo1());
}

[Test]
void TestSomethingFoo2()
{
    TestSomething(new Foo2());
}

我会选择一个最小的伪子类,将其与抽象类相关联。我喜欢认为,无论任何具体实例发生什么情况,抽象类都经过了适当的测试。这确实假设抽象类中的代码是非平凡的,编写伪类并不是不恰当的工作——对于mock,我认为通常会是这样。

我会选择一个最小的伪子类,将其与抽象类关联起来。我喜欢认为,无论任何具体实例发生什么情况,抽象类都经过了适当的测试。这确实假设抽象类中的代码是非平凡的,编写伪类不是不恰当的工作-对于mock,我认为通常会是这种情况。

duplicate of duplicate of duplicate of the duplicate of the duplicate of the duplicate of the