Во время модульного тестирования мне нужно украсить свои методы атрибутами Test, как показано ниже:
[Test]
public class when_1_is_passed : specifications_for_prime_test
{
public void should_return_false()
{
Assert.AreEqual(1,1);
}
}
Атрибуты [Test] означают, что метод является методом тестирования. Я хочу избавиться от атрибута [Test]. В 95% случаев все методы, определенные в наборе тестов, будут методами тестирования. Остальные 5% могут быть кодом инициализации и т. Д.
Во всяком случае, теперь мне как-то нужно динамически внедрить атрибут TestAttribute для всех методов. У меня есть следующий код, но я не вижу способ вставить атрибуты в метод.
public static void Configure<T>(T t)
{
var assemblyName = "TestSuite";
var assembly = Assembly.Load(assemblyName);
var assemblyTypes = assembly.GetTypes();
foreach (var assemblyType in assemblyTypes)
{
if(assemblyType.BaseType == typeof(specifications_for_prime_test))
{
// get all the methods from the class and inject the TestMethod attribute
var methodInfos = assemblyType.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach(var methodInfo in methodInfos)
{
// now attach the TestAttribute to the method
}
}
}
var methodsInfo = t.GetType().GetMethods();
}
ИЛИ может быть есть какая-то скрытая особенность инфраструктуры модульного тестирования, которая позволяет пользователю просто поместить атрибут в класс, и все методы внутри этого класса становятся тестовыми методами
Вот как выглядят тесты:
[TestFixture]
public class specifications_for_prime_test
{
[SetUp]
public void initialize()
{
UnitTestHelper.Configure(this);
}
}
public class when_1_is_passed : specifications_for_prime_test
{
public void should_return_false()
{
Assert.AreEqual(1,1);
}
}