gpt4 book ai didi

c# - System.TypeInitializationException

转载 作者:太空狗 更新时间:2023-10-29 22:24:41 24 4
gpt4 key购买 nike

我正在编写测试以测试 Infopath Forms 在 Form Control 中打开,我的测试方法如下

[TestMethod]
public void Validate_OpenInfopathInFormControl()
{
Helper.OpenForm();
//Other Code
}

我已经将 Helper 类写成

public class Helper
{
public static void OpenForm()
{
//Code to Open Form
}
}

但每次我执行这段代码时,都会得到:

Test method InfoPathTest.TestAPI.Validate_OpenInfopathInFormControl threw exception: System.TypeInitializationException: The type initializer for 'InfoPathTest.Helpers.Helper' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object..

当我尝试调试时,在需要初始化 Helper 类时失败。这真的很吃力,有什么解决办法吗?

这是完整的助手类:

namespace InfoPathTest.Helpers
{
public class Helper
{
//This is the form i need to OPEN
private static MainForm f = new MainForm();
private static bool _isOpen = false;

public static bool isOpen
{
set { _isOpen = value; }
get { return _isOpen; }
}

public static void OpenForm()
{
try
{
f.Show();
}
catch (Exception ex)
{
throw ex;
}
_isOpen = true;

}

public static void CloseForm()
{
f.Hide();
}
}
}

最佳答案

您的测试调用了 Helper.OpenForm() 并且因为您没有静态构造函数,所以我能看到的唯一会导致抛出异常的是:

private static MainForm f =  new MainForm();

因此 MainForm 的构造函数中的某些内容可能会引发异常。在 MainForm 的构造函数的第一行 上放置一个断点,然后单步执行,直到您看到抛出异常的位置。

或者,您可能会发现更容易确定问题是什么,至少在一开始,通过编写一个新的测试,您可以通过它直接调用 new MainForm():

[TestMethod]
public void Validate_OpenInfopathInFormControl()
{
var form = new MainForm();
}

在测试的唯一行上放置一个断点并进入构造函数以确定它抛出 NullReferenceException 的原因。

关于c# - System.TypeInitializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535302/

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