2016-03-28 19 views
1

まずVS2013 Winforms .net 4.0を使用しています。Visual Studio自動UIテストがハングする

他の可能性を除いて(私の可能性のあるものから)、犯人はMe.close()を特定の形式で表示します。 me.close()メソッドが実行された後、コード化されたUIテストアプリケーションはフリーズしているように見え、押されているボタンやテキストを入力していることについてのフィードバックは表示されません。私がコードを生成するように要求すると、プロセスをあきらめて終了させる前に、1時間も経ちます。私がme.closeなしで同じテストをしようとすると、期待どおりに動作します。誰も自動uiテストでこのバグを修正する方法を知っていますか?そうでない場合は、何か別の提案をお願いしますか?

編集:これは右上のフォームの「X」ボタンを押すだけです。これは非常に奇妙です。

Edit2:私は新鮮なプロジェクトでこれを試しました。確かに私は自動化されたコードを生成することができないように、コード化されたUIテストアプリケーションを「フリーズ」させ、ロードバーにお待ちください。

Edit3:超音波ボタンのinfragisticsクリックハンドラでme.closeを呼び出すことに特有のようです。うわー、ここに例があります。

デザイナー

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ 
Partial Class closemepls 
Inherits System.Windows.Forms.Form 

'Form overrides dispose to clean up the component list. 
<System.Diagnostics.DebuggerNonUserCode()> _ 
Protected Overrides Sub Dispose(ByVal disposing As Boolean) 
    Try 
     If disposing AndAlso components IsNot Nothing Then 
      components.Dispose() 
     End If 
    Finally 
     MyBase.Dispose(disposing) 
    End Try 
End Sub 

'Required by the Windows Form Designer 
Private components As System.ComponentModel.IContainer 

'NOTE: The following procedure is required by the Windows Form Designer 
'It can be modified using the Windows Form Designer. 
'Do not modify it using the code editor. 
<System.Diagnostics.DebuggerStepThrough()> _ 
Private Sub InitializeComponent() 
    Me.UltraButton1 = New Infragistics.Win.Misc.UltraButton() 
    Me.SuspendLayout() 
    ' 
    'UltraButton1 
    ' 
    Me.UltraButton1.Location = New System.Drawing.Point(45, 47) 
    Me.UltraButton1.Name = "UltraButton1" 
    Me.UltraButton1.Size = New System.Drawing.Size(232, 157) 
    Me.UltraButton1.TabIndex = 0 
    Me.UltraButton1.Text = "UltraButton1" 
    ' 
    'closemepls 
    ' 
    Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 
    Me.ClientSize = New System.Drawing.Size(284, 262) 
    Me.Controls.Add(Me.UltraButton1) 
    Me.Name = "closemepls" 
    Me.Text = "closemepls" 
    Me.ResumeLayout(False) 

End Sub 
Friend WithEvents UltraButton1 As Infragistics.Win.Misc.UltraButton 
End Class 

コード

Public Class closemepls 

Private Sub UltraButton1_Click(sender As Object, e As EventArgs) Handles UltraButton1.Click 
    Me.Close() 
End Sub 
End Class 

私はclosemepls.showdialog()を呼び出し、ボタンをコード化されたUIテストアプリケーションがフリーズをクリックすると! Infragistics FTW。

この結果、1時間後でも完了しません。

This is the hanging application I am talking about

+0

再生する最小限の例は? – Evk

+0

@エヴァイク私はあなたが編集したことを警告していますが、私は例を追加しましたが、サードパーティのコントロールを実行する必要があります。 – codemonkeyliketab

+0

'close'メソッドに関する文書はどこにありますか?私のクイックウェブ検索では、http://help.infragistics.com/Help/Doc/WinForms/2011.2/CLR2.0/html/Infragistics2.Win.Misc.v11.2~Infragistics.Win.Misc.UltraButton_members.html 'ultrabutton'クラスですが、そのページには' close'はありません。また、InfragisticsがCoded UIをサポートするレベルは? – AdrianHHH

答えて

0

私は前にWPFでそのような問題を抱えていました。

ここで私はそれを見つけました:すべてをコメントアウトし、ブロックを1つずつ戻して問題を引き起こすコードを見つけます。

これは、バインドされているものです(ただし、データではなく、おそらくコントロールです)、リリースされていないものです。私はずっとCodedUIとVBを混合しようとしていないが、私はこの質問はあなたを助けることを願っていた

+0

私はほぼすべてのコードをコメントアウトしました。残されているのは、デフォルトコンストラクタと、クリック時にme.closeを呼び出すボタンです。これは、コード化されたUIテストアプリケーションをフリーズする原因となっているme.closeコールです。これはとてもひどいです。 – codemonkeyliketab

+0

Me.Hideを使用してください。 –

+0

それはうまくいったが、それは理想的な回避策ではありません。私が取り組んでいるコードベースはかなり大きく、おそらくコードクローズに依存しています。ありがとう、私はこれを試して、それが私たちのために働くかどうかを見ていきます。 – codemonkeyliketab

0

アローン

Me.Close does not work

、それは右、あまり意味がないのですか?しかし、CodedUIがどのように動作するかに関連して、ヒントが得られるかもしれません。テストを実行しているときは、プロセスであるUITesting.Playbackを技術的に開始していることに注意してください。あなたはとても(これは、ブラウザのテストのためのものであることに注意してください)のように、すべてのプロセスが終了されているを確認しますあなたのTestCleanup方法に何かを追加することもできます。

/// <summary> 
/// Closes the test browser and ends test playback 
/// </summary> 
[TestCleanup]//The decorator is what makes this a method a test cleanup 
public void CleanTest() 
{   
    if (Playback.IsInitialized) //This is the important part. 
    { 
     Playback.Cleanup(); 
    } 
    if (browserWindow.Exists) 
    { 
     browserWindow.Close(); 
    } 
} 

これは、暗闇の中でだけでショットです私はあなたが必要とするものを誤解しているかもしれませんが、実際の領域とサンプル領域の両方でアプリケーション全体を閉じていると仮定しています。これは、終わりの時点でInfragisticsの問題となる可能性があります。がんばろう!

+0

私はそれをより良く説明するために画像を追加しました.Uiユニットテストの実行中に私がぶら下がっていると思っていますが、アプリがぶら下がっていると思います。私は[TestCleanup]タグは、winformアプリケーションの右で使用できるとは思わない? – codemonkeyliketab

+0

あなたのアプリはぶら下がっているものではありません。 CodedUIエンジンは現在のところぶら下がっているものです。 CodedUIテストの実行中にのみTestCleanupメソッドを呼び出すことができるので、私の提案はあなたには役に立たないかもしれないと思います。 これが正しいかどうかを教えてください:あなたは、winformsアプリケーションを備えています。アプリケーションのソリューションには、CodedUIプロジェクトがあります。そのCodedUIプロジェクト内には、テストがあるクラスがあります。テストでme.closeを呼び出す何らかの処理が行われると、CodedUIエンジンはコードと地図の成果物を生成せず、代わりにVSがフリーズします。 – Ryanman

+0

アプリケーションコードとCodedUIプロジェクトは異なるソリューションになっていますが、同じソリューションに入っていても違いはありませんでした。テストプロジェクトでのデフォルトのタグ付きメソッドでは、CodedUI Engine App(my picture)を開始するためにCtrl + \&ctrl + cを押しました。私はそれから、ビルドされたアプリケーションのexeをクリックして、超小型ボタンを介して子フォームを開き、子供用の超音波ボタンを押してme.closeを呼び出すと、コード化されたUIエンジンのアプリケーションがフリーズし、エンジンのコードをCodedUITest私は後でそれを実行することができます。 – codemonkeyliketab

0

MTMを使用したときに発生したのと同じ問題が、いくつかのマシンで発生したテストのキャプチャ形式を実行していた場合に発生する可能性があります。どこに違法パスに保存しようとしているのですか(イベントビューアにあります)。 VSで修理を実行した後に修理されたため、MTMが修復され、一部のマシンで動作しました。他の人は、更新するときに固定されるように継ぎ目がついています。

しかし、私はあなた自身が違う振る舞いをするかどうかを見るために、フォームの閉じるボタンをクリックすることを勧めます。

Dim closeButton = New WinButton(YourWindow); 
closeButton.SearchProperties(UITestControl.PropertyNames.Name) = "Close"; 
Mouse.Click(closeButton);