Ошибка NUnit по индексу -1 - PullRequest
       22

Ошибка NUnit по индексу -1

0 голосов
/ 08 августа 2010

Я пытаюсь тестировать NUnit, добавляя элемент в коллекцию из нового потока. Это тестовая функция, которую я использую:

[Test]
public void WorkerThreadAccess()
{
    string foo = "Foo";
    Collection<string> collection = new Collection<string>();
    System.Threading.Thread thread = 
              new System.Threading.Thread(() => collection.Add(foo));
    thread.Start();

    Collection<string> expected = new Collection<string> { foo };
    System.Threading.Thread.Sleep(0);
    CollectionAssert.AreEqual(expected, collection);
}

Когда я запускаю тест один раз, он проходит. Однако в каждом последующем тесте без закрытия графического интерфейса NUnit NUnit не выполняет Assert со странной ошибкой:

Ожидаемый и фактический значения: <System.Collections.ObjectModel.Collection 1 [System.String] `> с 1 элементом
Значения отличаются по индексу [0]
Длина строк равна 3. Строки различаются по индексу -1.
Ожидаемый: "Foo"
Но было: "Фу"

Кто-нибудь может дать некоторое представление о том, что происходит не так? Элементы выглядят одинаково для меня, и индекс -1 должен возвращаться только при ошибке IndexOf().

РЕДАКТИРОВАТЬ: я использую NUnit 2.5.7

1 Ответ

1 голос
/ 08 августа 2010

попробуйте заменить System.Threading.Thread.Sleep(0); на thread.Join();

На самом деле вы хотите дождаться завершения второго потока, а не просто приостановить текущий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...