我正在构建一个实用程序来运行单元测试用例,向用户提供选择他们想要运行的测试的选项。我正在使用反射来获取方法。但它不起作用
var assembly = Assembly.Load("TestingAssembly");
var classes = assembly.GetTypes().Where(m => m.GetCustomAttributes(typeof(TestClassAttribute), false).Length > 0);
foreach (var type in classes)
{
var methods= type.GetTypes().Where(m1 => m1.GetCustomAttributes(typeof(TestMethodAttribute), false).Length > 0);
}
classes对象始终为空。如果我遍历assembly.GetTypes并获取自定义属性,它将返回计数。但是,我仍然无法匹敌它。在下面的代码中,属性包含一个名为TestClassAttribute的项。但是当我将属性的类型与TestClassAttribute匹配时,它就会失败。
foreach (Type type in assembly.GetTypes())
{
if (type.GetCustomAttributes().Count() > 0)
{
var attributes = type.GetCustomAttributes();
foreach (var item in attributes)
{
if (item.GetType() == Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute)
{
//Do something
}
}
}
}