【问题标题】:Test always gives "Object reference not set to an instance of an object"测试总是给出“对象引用未设置为对象的实例”
【发布时间】:2012-07-23 21:21:04
【问题描述】:

我目前正在为类方法编写单元测试,但访问器总是抛出异常。

考虑以下测试方法:

namespace GSVMTestCase
{    
    [TestClass]
    public class GatewaySettingsViewModelTest
    {
        [TestMethod]
        [DeploymentItem("SmartGatewayUABL.dll")]
        public void AddGatewayTest1()
        {
            GatewaySettingsViewModel_Accessor target = new GatewaySettingsViewModel_Accessor(); // error occurs here
            target.GatewayIPAddress = null;
            target.AddGateway();
            Assert.AreEqual(TextStrings.TxtErrInvalidIP, target.ErrorMessage);
        }}}
}

总是抛出异常:

对象引用未设置为对象的实例

【问题讨论】:

  • 你确定是那条线吗?请注意,我们看不到GatewaySettingsViewModel_Accessor,所以我不确定我们应该如何评论......
  • 不是GatewaySettingsViewModel_Accessor()构造函数抛出的异常吗?
  • 您的编辑没有帮助;你说错误是在调用GatewaySettingsViewModel_Accessor 构造函数时。您没有显示的一件事是:GatewaySettingsViewModel_Accessor 构造函数。
  • 是 GatewaySettingsViewModel_Accessor 抛出异常

标签: c# wpf unit-testing exception-handling mstest


【解决方案1】:

嘿,在调用构造函数时得到了问题的解决方案,缺少配置文件。所以在添加 app.config 后它得到了解决。感谢大家的宝贵评论

【讨论】:

    【解决方案2】:

    鉴于您在此处所做的命名方案,您似乎在使用一些技巧来测试此程序集。如果这个“SmartGatewayUABL.dll”是你的程序集,那么我会添加一个对测试程序集的项目引用并在没有部署项的情况下对其进行测试。

    如果它不是您的程序集,那么人们会想知道您为什么要尝试从中测试一个类。如果您想坚持和维护测试,这通常是不可取的。如果您只是在进行实验,我建议您在此处结束实验并尝试其他方法。

    【讨论】:

      【解决方案3】:

      只是为了让其他有此问题的人更清楚。您的主项目可以从后端获取数据到前端,因为必须在其 web.config 文件中设置 connectionString。因此,您需要在单元测试项目中创建一个名为 *.config 的应用程序配置文件,并将此 connectionString 粘贴到其中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-12
        • 1970-01-01
        • 2020-11-03
        • 2013-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多