虽然我熟悉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进行测试。
答案 0 :(得分:0)
好的,这里有多个问题:
配置正确的NUnit实例。我使用SharpDevelop而不是Visual Studio,我不得不删除对NUnit内部版本的引用,并指向最新安装的版本。由于我使用Maven / NPanday来构建我的项目,所以许多事情都不如Maven with Java那么好。
与数组引用相关的代码的细微更改。我移动了一些代码,当然逻辑也改变了。当长度为0时,我试图访问commandArguments [0]。
多年来,我一直被Java宠坏了。我一直忘记那一切'在.NET或MicrosoftLand中更难。例如,在Java中,堆栈跟踪默认带有行号。在.NET中,你必须花费数小时的研究来试图弄清楚如何使这项工作。
我的特定程序使用提升的权限运行,因此正常调试不受限制。
在解决了所有这些问题之后,我的代码和测试终于可以正常工作了。现在我必须弄清楚如何让.NET终止我的theads - 哦我多么想念Java。
感谢Rick和RJ,您的评论确实有所帮助。