Тестирование UnityBootstrapper терпит неудачу из-за Application.Current быть нулевойТестирование UnityBootstrapper Реализация Сбой связи с Application.Current быть нулевой реализации
Я занимаюсь разработкой приложения WPF с использованием TDD, Prism, и шаблон MVVM. Когда я пишу тест, чтобы проверить, что контейнер Bootstrapper не равен null после того, как приложение запускает тест, сбой происходит из-за того, что Application.Current имеет значение null в методе InitializeShell
.
public class BootstrapperTests
{
[Fact]
public void BootstrapperServiceLocator()
{
// Arrange
var sut = new Bootstrapper();
// Act
sut.Run();
// Assert
Assert.NotNull(sut.Container);
}
}
При запуске приложения все работает, как ожидалось; только при запуске теста я получаю нулевое исключение.
public class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return ServiceLocator.Current.GetInstance<Shell>();
}
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (Window) Shell;
Application.Current.MainWindow.Show();
}
}
Я хотел бы знать, как я мог избежать этой проблемы во время выполнения тестов.
Сделайте нулевую проверку и попытайтесь установить свойство, если оно не равно null. – Nkosi