Тестовый пример завершен до завершения выполнения потока C# - PullRequest
1 голос
/ 13 июля 2020

Среда: Dotnetcore: 3.1, Nunit: 3.12.0

Я пытался написать модульный тест для метода publi c в классе, который создаст тяжелый сиротский поток, когда я пытался запустить все модульные тесты в моем приложении, сиротский поток не выполнялся должным образом и он завершался посередине из-за того, что другие модульные тесты не выполняются. Ниже приведена ошибка, которую он выдавал.

A total of 1 test files matched the specified pattern. The active test run was aborted. Reason: Test host process crashed

Code Snippet
// Unit test case logic
[Test(Description = "TestCase. - orphan Thread)]
public async Task OrphanThreadUntiTestCase()
{
     var actual = _repository.SampleMethod();
     Assert.AreEqual(true, actual.Result);

}


// Repository Logic
public class Repository{
constructor(){
}
public SampleMethod(){
 _ = Task.Run(() =>
  {
       HeavyTask();
  });

return true;
}

private HeavyTask(){
// execution of this task was taking more time.
// due to this Task my whole unit test cases are not executed.
}

}

1 Ответ

0 голосов
/ 16 июля 2020

Что делает SampleMethod, так это «запустил и забыл» задачу. Вы должны изменить метод на asyn c:

public async Task SampleMethod()
{
  return Task.Run(() =>
    {
       HeavyTask();
    });
}

Затем дождитесь этого метода в OrphanThreadUntiTestCase:

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