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 ответ

ОК, здесь много проблем:

  1. Получение правильных настроенных экземпляров NUnit. Я использую SharpDevelop вместо Visual Studio, и мне пришлось удалить ссылку на внутреннюю версию NUnit и указать на последнюю установленную версию. Поскольку я использую Maven/NPanday для создания своего проекта, многие вещи не работают так же хорошо, как Maven с Java.

  2. Незначительные изменения в коде, связанные с ссылками на массивы. Я переместил некоторый код, и, конечно, логика изменилась. Я пытался получить доступ к commandArguments[0], когда длина была 0.

  3. Я был избалован использованием Java на протяжении многих лет. Я постоянно забываю, что "все" в.NET или MicrosoftLand сложнее. Например, в Java трассировка стека поставляется с номерами строк по умолчанию. В.NET вы должны тратить часы на исследования, пытаясь понять, как это сделать.

  4. Моя конкретная программа работает с повышенными привилегиями, поэтому обычная отладка запрещена.

После исправления всех этих проблем мой код и тесты наконец работают, в основном работают. Теперь я должен выяснить, как получить.NET, чтобы прекратить мои theads- о, как я уже скучаю по Java.

Спасибо Рик и RJ, ваши комментарии действительно помогли.

Другие вопросы по тегам