在單元測試我需要裝飾我的方法使用測試屬性,如下所示:動態注入屬性的方法
[Test]
public class when_1_is_passed : specifications_for_prime_test
{
public void should_return_false()
{
Assert.AreEqual(1,1);
}
}
的[測試]屬性表示的方法是一個測試方法。我想擺脫[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);
}
}
我很難理解這樣做的動機。 – womp 2009-09-16 20:22:12
我想我可能會錯過一些東西,但是你的[Test]方法不在[TestFixture]測試類中嗎?如果是這樣的話,爲什麼你需要永遠刪除測試屬性? – 2009-09-16 20:23:32
這樣做的想法是刪除手動添加[Test]屬性。一旦所有方法都具有[Test]屬性,它們將被視爲單元測試。 – azamsharp 2009-09-16 20:24:27