0
我正在研究應用程序中的某些行爲,並進行了一貫使測試引擎崩潰的測試。我簡化了測試代碼到這一點:對話框中的例外導致MSTest崩潰
[TestMethod, Timeout(2000)]
public void ShowDialogShouldCleanupAfterException()
{
var topWindow = new Window();
topWindow.Loaded += (sender, args) =>
{
var childWindow = new Window();
childWindow.Loaded += (o, eventArgs) =>
{
throw new Exception("ChildWindowException");
};
childWindow.ShowDialog();
topWindow.Close();
};
topWindow.ShowDialog();
}
每次我運行此代碼,彈出一個對話框,告訴我vstest.executionengine.exe
已停止工作。爲什麼會發生這種情況,我可以做些什麼來確保測試在發生這種情況時能夠繼續運行?發生在WPF示例應用程序
編輯
類似的現象:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var childWindow = new Window();
childWindow.Loaded += ChildWindow_Loaded;
childWindow.Owner = this;
try
{
childWindow.ShowDialog();
}
catch (Exception)
{
MessageBox.Show("Exception caught");
}
}
private void ChildWindow_Loaded(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
...
我明白這段代碼有問題。捕捉子對話框中的異常將解決此問題。但我只是想明白爲什麼它的行爲如此。
它經常發生歸因於遞歸調用。可能的重複https://stackoverflow.com/questions/40150167/vstest-crashed-when-running-some-particular-tests –
我不希望測試運行者爲UI設置必要的基礎結構來運行。 –
@Damien_The_Unbeliever,不錯的建議,但我的其他測試特色的UI組件只是工作,我在WPF應用程序中有類似的行爲。這就是我做這些不合理測試的原因。我在WPF應用程序中用這個例子編輯了我的問題。 – Martijn