コード化された UI テストで遊んでいて、calc.exe アプリケーションのテストをいくつか書いています。ClassInitialize を使用してアプリケーションを開こうとしているので、各テストが毎回アプリケーションを開いたり閉じたりするのではなく、アプリケーションを開いたまますべてのテストを実行できます。
Google 検索でこれを見つけました: http://www.codesmartnothard.com/CommentView,guid,f28e6205-1ac5-41f3-be0d-f84d7db5c79b.aspxしかし、役に立ちません。これが実際に機能するのに必要なすべてだったら、それは素晴らしいことです. ClassInitialize関数が実行され、アプリケーションが開き、最初のテストが実行される前にすぐに閉じるので、テストを実行すると、アプリケーションは開かれなくなり、しばらく何も起こらないと必然的に失敗します.
ClassInitialize を使用してアプリケーションを開き、テストを実際に実行するためにそれを開いたままにしておくにはどうすればよいですか?
次のコードがある場合、テストが実行されます。
[CodedUITest]
public class CodedUITest1
{
[TestMethod]
public void CodedUITestMethod1()
{
UIMap.OpenCalc(); //Opens calc.exe
UIMap.Click1(); //Clicks the "1" button
UIMap.CloseCalc(); //Closes application
}
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
private TestContext testContextInstance;
public static UIMap UIMap
{
get
{
if ((map == null))
{
map = new UIMap();
}
return map;
}
}
private static UIMap map;
}
ただし、この ClassInitialize メソッドを追加し、TestMethod で OpenCalc への呼び出しを削除すると、機能しなくなります。電卓が開き、何らかの理由ですぐに閉じます。
[ClassInitialize]
public static void ClassInit(TestContext context)
{
Playback.Initialize();
try
{
UIMap.OpenCalc();
}
finally
{
Playback.Cleanup();
}
}