gpt4 book ai didi

c# - Visual Studio 2010 - 单元测试 - 使用泛型和 AssemblyInitialize 时出现异常

转载 作者:行者123 更新时间:2023-11-30 12:12:42 25 4
gpt4 key购买 nike

我在 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] 方法。

提前感谢您的任何建议。

最佳答案

您实际上并不需要继承。您可以在包含 AssemblyInit 和 AssemblyCleanUp 属性方法的测试项目/程序集中放置一个单独的类。像这样:

[TestClass]
public static class AssemblyInitializer
{
[AssemblyInitialize]
public static void AssemblyInit(TestContext context)
{

}

[AssemblyCleanup]
public static void AssemblyCleanup()
{
}
}

关于c# - Visual Studio 2010 - 单元测试 - 使用泛型和 AssemblyInitialize 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13195821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com