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, работает так же.
Установка базового класса как абстрактного может остановить это поведение.