在单元测试期间,我需要使用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);
}
}
答案 0 :(得分:2)
如果不使用Test属性修饰Test方法会发生什么,而是使用Test为Test-methods的名称添加前缀。
请参阅this。
NUnit也应该将它识别为测试方法,而不必用TestAttribute
来装饰方法
但是,我已经用NUnit 2.4.7进行了测试,这似乎不再适用了。
无论如何,我不明白为什么这会困扰你?使用Test-Attribute修饰方法有什么问题?这只是明确表示它是一个测试。 我喜欢明确:)
答案 1 :(得分:0)
您可以使用TypeDescriptor
吗?