【发布时间】:2012-11-02 13:06:35
【问题描述】:
我在 Visual Studio 2010 中的单元测试有问题。我已将简化代码粘贴在下面。
[TestClass]
public class TestClassA<T>
{
[AssemblyInitialize()]
public static void Initialize(TestContext testContext) {}
}
[TestClass]
public class TestClassB : TestClassA<String>
{
[TestMethod]
public void TestMethod()
{
Assert.IsTrue(true);
}
}
当我运行TestMethod() 时,出现以下异常:
Assembly Initialization method TestProject.TestClassA`1.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: Late bound operations cannot be performed on types or methods for which ContainsGenericParameters is true.. Aborting test execution.
at System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException()
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.RunAssemblyInitializeMethod()
当我在谷歌上搜索这个错误时,我可以找到如何修复使用反射调用 [AssemblyInitialize] 方法的代码的建议。但是那个代码不是我的,它是:
Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.RunAssemblyInitializeMethod()
我可以使用 [ClassInitialize] 方法而不是 [AssemblyInitialize] 并且它可以工作,但我仍然想使用 [AssemblyInitialize] 方法。
提前感谢您的任何建议。
【问题讨论】:
-
抱歉,Visual Studio 2010,不是 2008...我刚刚更正了它...
-
在您的
Initialize方法中,您是否引用了T类型? -
不,我不知道。它不相关,只是不能一起工作。
-
我试过没有
和 。我的测试通过了。 -
嗯,谢谢,但它应该如何提供帮助?我的问题是如何让它一起工作——泛型和 AssemlbyInitialize。不要删除它的一部分......
标签: c# visual-studio-2010 unit-testing generics