Посмотрел ваш репозиторий. Я могу воспроизвести проблемы, которые вы описываете.
Похоже на ошибку в TestKit, где-то проблема со временем. Но его трудно зафиксировать. Кроме того, не все среды модульного тестирования созданы одинаково. Тестовый набор использует собственный TaskDispatcher для тестирования операций, которые обычно являются асинхронными. Иногда это вызывает некоторые конфликты с используемой тестовой средой. Это также случайное совпадение, почему akka.net также перешел на XUnit для своего собственного процесса CI.
Мне удалось решить вашу проблему, не используя TestProbe. Хотя я не уверен, связана ли проблема с TestProbe, скажем, или с тем фактом, что вы используете глобальную ссылку (ваша переменная «процесс»). Я подозреваю, что testframework, выполняя тесты параллельно, может вызывать некоторые странные вещи, происходящие с вашей ссылкой testprobe.
Пример того, как я изменил один из ваших тестов:
[Test]
public void GivenAnyTime_WhenProcessTerminates_ShouldLogStartRemovingProcess()
{
IProcessFactory factory = Substitute.For<IProcessFactory>();
var testactor = Sys.ActorOf<FakeActor>("test2");
processId = Guid.NewGuid();
factory.Create(Arg.Any<IActorRefFactory>(), Arg.Any<SupervisorStrategy>()).Returns(testactor);
manager = Sys.ActorOf(Props.Create(() => new Manager(factory)));
manager.Tell(new StartProcessCommand(processId));
EventFilter.Info("Removing process.")
.ExpectOne(() => Sys.Stop(testactor));
}
Должно быть довольно понятно, как вы должны изменить свой другой тест. FakeActor
— это не что иное, как пустая реализация ReceiveActor
.
person
Danthar
schedule
02.12.2016
GivenProcessExist_WhenProcessterminates_ShouldLogRemovingProcess
каждый раз надежно терпит неудачу. Это всегда работает, если я запускаю один тест в одиночку. Но все тесты вместе работают нормально, если я переупорядочу их, выполнивGivenProcessExist_WhenProcessterminates_ShouldLogRemovingProcess
в качестве первого. - person Haukinger   schedule 02.12.2016