0

ホワイトを使用したGUI(winforms)テストがあります。これは開発では正常に機能しますが、ビルドサーバーでスタックします。

アプリケーションは正常に開きますが、何かを「実行」しようとするとすぐに次のようになります。

Button Button = Window.Get<Button>("btnCalculate");
Button.Click();

行き詰まります。サーバーは次のことを報告します。

---- White.Core.UIItems.UIActionException : Window in still wait mode. Cursor: White.Core.InputDevices.MouseCursor, after waiting for 5000 ms
   at Bricks.RuntimeFramework.ReflectedObject.Invoke(MethodInfo methodInfo, Object[] arguments)
   at Bricks.DynamicProxy.DynamicProxyInterceptors.Process(IInvocation invocation, InterceptContext interceptedContext)
   at White.Core.Interceptors.CoreInterceptor.Intercept(IInvocation invocation)
   at Castle.DynamicProxy.AbstractInvocation.Proceed()
   at ButtonProxy6fcb23ab82174f67960e33c02ddb2259.Click()
   at WinCalc.Gui.Test.AcceptanceTests.WhiteTest() in d:\BuildServer\Agent\work\f00b471a939c7f96\WinCalculator\WinCalc.Gui.Test\AcceptanceTests.cs:line 39
----- Inner Stack Trace -----
   at White.Core.UIItems.Actions.Action.<Handle>b__2()
   at Bricks.Core.Clock.Perform(Do do, Matched matched, Expired expired)
   at White.Core.UIItems.Actions.Action.Handle(Window window)
   at White.Core.UIItems.WindowItems.Window.ActionPerformed(Action action)
   at White.Core.InputDevices.Mouse.ActionPerformed(ActionListener actionListener)
   at White.Core.InputDevices.Mouse.Click(Point point, ActionListener actionListener)
   at White.Core.UIItems.UIItem.PerformClick()
   at White.Core.UIItems.UIItem.Click()

これをデバッグするにはどこから始めればよいですか?

(私はそれを別のサーバーで動作させたので、それが私のコードではないと思います。それは新しいサーバーでのセットアップです)。

4

1 に答える 1

1

この問題は、ビルド エージェントのサービスがデスクトップを持たないため、実際にウィンドウを作成できないことが原因である可能性があります。

最初に試すことができるのは、teamcity ビルド エージェント サービス設定で、「サービスがデスクトップと対話できるようにする」ことを確認することです。がチェックされます。その後、サービスを再起動して、テストを再度実行してみてください。

過去には、そのソリューションで一貫性のない結果が得られました。理由の詳細はよくわかりませんが、それでもうまくいかない場合は、ボックスにログインしているときにコマンドラインで Team City エージェントを実行してみてください。これは間違いなく機能するはずです。デスクトップを起動したままにしておくと、おそらく Windows が作成され、テスト中に必要なことは何でも実行されます。

于 2012-05-24T18:59:57.510 に答える