コード化されたUIテストを作成していますが、アプリケーションがまだ開いていない場合は開いています。次に、そのうちの1つが失敗した場合、アプリケーションを閉じます。複数のプロジェクトに複数のテストがあります。すべてのテストの実行が完了した後でアプリケーションを閉じる方法はありますか? testSettingsファイルに何かありますか?
これがまったく役に立った場合、すべてのテストクラスは1つのcodeduiTestBaseから派生します。これは、私が持っている設定をセットアップする方法です。
アプリケーションは大きなアプリケーションであり、ロードに時間がかかりすぎるため、各テストの実行の前後にアプリケーションを開いたり閉じたりする必要はありません。
はい、可能です。この目的でAssemblyCleanup属性を使用できます。
アセンブリ内のallテストの実行後に使用され、アセンブリによって取得されたリソースを解放するためのコードを含むメソッドを識別します。
実行時間に従って配置されたすべてのMSTestメソッドの概要は次のとおりです。
using Microsoft.VisualStudio.TestTools.UnitTesting;
using SampleClassLib;
using System;
using System.Windows.Forms;
namespace TestNamespace
{
[TestClass()]
public sealed class DivideClassTest
{
[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
MessageBox.Show("AssemblyInit " + context.TestName);
}
[ClassInitialize()]
public static void ClassInit(TestContext context)
{
MessageBox.Show("ClassInit " + context.TestName);
}
[TestInitialize()]
public void Initialize()
{
MessageBox.Show("TestMethodInit");
}
[TestCleanup()]
public void Cleanup()
{
MessageBox.Show("TestMethodCleanup");
}
[ClassCleanup()]
public static void ClassCleanup()
{
MessageBox.Show("ClassCleanup");
}
[AssemblyCleanup()]
public static void AssemblyCleanup()
{
MessageBox.Show("AssemblyCleanup");
}
[TestMethod()]
[ExpectedException(typeof(System.DivideByZeroException))]
public void DivideMethodTest()
{
DivideClass.DivideMethod(0);
}
}
}
参照: MSTest-Methods
[〜#〜]重要[〜#〜]
基本クラスを使用している人は、そこでアセンブリのクリーンアップも行うことができます
[TestClass]
public class Page : PageContract, IWindowControlAccess
{
[AssemblyCleanup()]
public static void ApplicationCleanup()
{
Cleanup();
}
}
ここで2つの重要なこと1.ベースの[TestClass]属性は必須です
2. ApplicationCleanupの署名は、そのstaticメソッドを参照してください
これで完了です。私はそれを苦労してデバッグするのに苦労しました。
おそらくあなたが探しているのは TestCleanup属性 ?
編集:また、すべてのテストが実行された後に何かを実行したい場合は、 AssemblyCleanupAttribute がより適切かもしれません。
1つのクラス内のすべてのテストが終了した後でクリーンアップするだけの場合は、AssemblyCleanup属性ではなくClassCleanup属性を使用します。