Resharper Testrunner запускает класс без [TestFixture] - почему?

Мы используем VS 2008 и Resharper 5.1 (C#) и NUnit 2.4.8.

У меня есть этот базовый тестовый класс, который не имеет [TestFixture] атрибут:

public class BaseTestCasesFixture: BaseFixture
{
    protected virtual int Calculate(DatePeriod period)
    {
        throw new NotSupportedException("Should be implemented by inheriter");
    }

    [Test]
    public void Test1()
    {
        Assert.That(Calculate(new DatePeriod(2006, 2, 28, 2007, 2, 28)), Is.EqualTo(361));
    }

И у меня есть два его потомка, которые наследуют от этого базового класса и реализуют две версии тестируемого метода:

[TestFixture]
public class RealTestCaseFixture1 : BaseTestCasesFixture
{
    protected override int Calculate(DatePeriod period)
    {
        return period.DaysAsWeNeedThem;
    }

Теперь, когда я запускаю эти тесты на моем сервере сборки (Bamboo), кажется, что все работает нормально, но, запустив их в Visual Studio с помощью тестового запуска Resharper 5.1, RS настаивает на запуске моего BaseTestCasesFixture (НЕТ [TestFixture] на нем!!) и с треском проваливается (15 раз!) ....

Есть идеи почему?? Это ошибка Resharper Testrunner? Кто-нибудь знает, что это исправлено в 6.0/6.1??

Обновление: только что протестировано с самой последней RS 6.1 - все та же проблема:-(

1 ответ

Решение

Если бы я рискнул предположить, атрибута [Test] в базовом классе достаточно, чтобы Resharper мог принять атрибут [TestFixture], даже если он отсутствует. NUnit, начиная с v2.5, работает так же.

Установка базового класса как абстрактного может остановить это поведение.

Другие вопросы по тегам