NUnit System.NullReferenceException没有意义

时间:2014-04-01 23:34:23

标签: c# maven nunit

虽然我熟悉JUnit,但我对NUnit不熟悉。我的(SIMPLE)测试失败了,我无法理解它。

[INFO]  | NUnit-Console version 2.6.3.13283
[INFO]  | Copyright (C) 2002-2012 Charlie Poole.
[INFO]  | Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
[INFO]  | Copyright (C) 2000-2002 Philip Craig.
[INFO]  | All Rights Reserved.
[INFO]  |
[INFO]  | Runtime Environment -
[INFO]  |    OS Version: Microsoft Windows NT 6.2.9200.0
[INFO]  |   CLR Version: 2.0.50727.8000 ( Net 3.5 )
[INFO]  |
[INFO]  | ProcessModel: Default    DomainUsage: Single
[INFO]  | Execution Runtime: net-3.5
[INFO]  |
[INFO]  | Tests run: 1, Errors: 1, Failures: 0, Inconclusive: 0, Time: 0.130717193180073 seconds
[INFO]  |   Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0
[INFO]  |
[INFO]  | Errors and Failures:
[INFO]  | 1) Test Error : net.kolotyluk.windows.elevate.ElevateTest.NoArguments
[INFO]  |    System.NullReferenceException : Object reference not set to an instance of an object.
[INFO]  |    at net.kolotyluk.windows.elevate.Elevate.Main(String[] commandArguments)
[INFO]  |    at net.kolotyluk.windows.elevate.ElevateTest.NoArguments()
[INFO]  |
[INFO]  |
[INFO]  +--[ FAILED, result = 1, error output = false]

我的实际测试代码是

[Test]
public void NoArguments()
{
    String [] arguments = new String[0];

    Assert.AreNotEqual(null, arguments);

    var result = Elevate.Main(arguments);

    Assert.Equals(0, result);
}

我的测试代码以

开头
public static int Main(string[] commandArguments)
{
    if (commandArguments == null) return 0;

对于我的生活,我不能找出NullReferenceException的来源。

甚至更疯狂的是,在某些时候这个测试通过很好,所以现在我不知道发生了什么。如果它有任何相关性,我正在使用Maven和NPanday进行测试。

1 个答案:

答案 0 :(得分:0)

好的,这里有多个问题:

  1. 配置正确的NUnit实例。我使用SharpDevelop而不是Visual Studio,我不得不删除对NUnit内部版本的引用,并指向最新安装的版本。由于我使用Maven / NPanday来构建我的项目,所以许多事情都不如Maven with Java那么好。

  2. 与数组引用相关的代码的细微更改。我移动了一些代码,当然逻辑也改变了。当长度为0时,我试图访问commandArguments [0]。

  3. 多年来,我一直被Java宠坏了。我一直忘记那一切'在.NET或MicrosoftLand中更难。例如,在Java中,堆栈跟踪默认带有行号。在.NET中,你必须花费数小时的研究来试图弄清楚如何使这项工作。

  4. 我的特定程序使用提升的权限运行,因此正常调试不受限制。

  5. 在解决了所有这些问题之后,我的代码和测试终于可以正常工作了。现在我必须弄清楚如何让.NET终止我的theads - 哦我多么想念Java。

    感谢Rick和RJ,您的评论确实有所帮助。