|
分類:[C#]
こんにちはです。 久々に投稿させていただきます。
NUnitでちょっと良くわからない例外が発生しています。 例外はスレッドに関するものなので、.netframework特有の問題のように思えたので調べたのですが、 原因がつかめません。NUnitのホームページを見ると.netが3.0や3.5を明示的にサポートしているようには見えずこれが原因なのかと思いましたが、どなたかご存知の方いらっしゃればご指摘ください。
現象を以下にまとめます。 ■現象 NUnitのGUIでテストを実行すると正常に終了するが、Console(コマンド)で実行すると 以下の例外が発生し、失敗する場合がある(割合的には10回の内、8回くらいは失敗)。
【例外】 Errors and Failures: 1) Test Error : *****.*****.***** System.InvalidOperationException : このオブジェクトは別のスレッドに所有されているため、呼び出しスレッドはこのオブジェクトにアクセスできません。 場所 System.Windows.Threading.Dispatcher.VerifyAccess() 場所 System.Windows.Threading.DispatcherObject.VerifyAccess() 場所 MS.Internal.Media.VisualTreeUtils.AsVisual(DependencyObject element, Visual& visual, Visual3D& visual3D) 場所 MS.Internal.Media.VisualTreeUtils.AsNonNullVisual(DependencyObject element, Visual& visual, Visual3D& visual3D) 場所 System.Windows.Media.VisualTreeHelper.GetParent(DependencyObject reference) 場所 System.Windows.FrameworkElement.BuildRouteCoreHelper(EventRoute route, RoutedEventArgs args, Boolean shouldAddIntermediateElementsToRoute) 場所 System.Windows.FrameworkElement.BuildRouteCore(EventRoute route, RoutedEventArgs args) 場所 System.Windows.UIElement.BuildRouteHelper(DependencyObject e, EventRoute route, RoutedEventArgs args) 場所 System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) 場所 System.Windows.UIElement.RaiseEvent(RoutedEventArgs e) 場所 *****.*****.*****() 場所 *****.cs:行 ***
NUnitの実行は、以下のオプションを指定しています。 ・スレッドアパートメントを「STA」。 ・コマンドオプションで「/nothread」。 このあたりは、WPF+UIAutomationでのNunitの実施に関する長沢さんのブログを参考にしました。
■実行環境 ■実行OS Windows XP Professional Version 2002 Service Pack 2 ■VisualStudio VisualStudio 2008 Professional Edition ■インストール .NET Framework Microsoft .NET Framework 1.1 SP1 Microsoft .NET Framework 2.0 SP2 Microsoft .NET Framework 3.0 SP2 Microsoft .NET Framework 3.5 SP2 ■NUnitバージョン NUnit 2.5.2.9222
■テスト対象アセンブリ ■プロジェクトタイプ クラスライブラリ ■対象フレームワーク .NET Framework v3.5 ■言語 C# ■備考 WPFを使用したGUIクラスライブラリ。
■テスト用アセンブリ ■プロジェクトタイプ クラスライブラリ ■対象フレームワーク .NET Framework v3.5 ■言語 C#
|