NUnit System.NullReferenceException не имеет смысла
Хотя я знаком с JUnit, я менее знаком с NUnit. Мой (ПРОСТОЙ) тест не пройден, и я не могу понять его.
[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 ответ
ОК, здесь много проблем:
Получение правильных настроенных экземпляров NUnit. Я использую SharpDevelop вместо Visual Studio, и мне пришлось удалить ссылку на внутреннюю версию NUnit и указать на последнюю установленную версию. Поскольку я использую Maven/NPanday для создания своего проекта, многие вещи не работают так же хорошо, как Maven с Java.
Незначительные изменения в коде, связанные с ссылками на массивы. Я переместил некоторый код, и, конечно, логика изменилась. Я пытался получить доступ к commandArguments[0], когда длина была 0.
Я был избалован использованием Java на протяжении многих лет. Я постоянно забываю, что "все" в.NET или MicrosoftLand сложнее. Например, в Java трассировка стека поставляется с номерами строк по умолчанию. В.NET вы должны тратить часы на исследования, пытаясь понять, как это сделать.
Моя конкретная программа работает с повышенными привилегиями, поэтому обычная отладка запрещена.
После исправления всех этих проблем мой код и тесты наконец работают, в основном работают. Теперь я должен выяснить, как получить.NET, чтобы прекратить мои theads- о, как я уже скучаю по Java.
Спасибо Рик и RJ, ваши комментарии действительно помогли.