[英]MsTest - executing method before each test in an assembly
是否可以在程序集中的每次測試之前運行特定方法?
我知道TestInitialize
屬性,但該屬性具有“類范圍”。 如果它是在 Test 類中定義的,它將在該類的每個測試之前執行。
我想定義一個方法,該方法將在整個程序集中定義的每個測試之前執行。
[TestInitialize()]
正是您所需要的。
private string dir;
[TestInitialize()]
public void Startup()
{
dir = Path.GetTempFileName();
MakeDirectory(ssDir);
}
[TestCleanup()]
public void Cleanup()
{
ss = null;
Directory.SetCurrentDirectory(Path.GetTempPath());
setAttributesNormal(new DirectoryInfo(ssDir));
Directory.Delete(ssDir, true);
}
[TestMethod]
public void TestAddFile()
{
File.WriteAllText(dir + "a", "This is a file");
ss.AddFile("a");
...
}
[TestMethod]
public void TestAddFolder()
{
ss.CreateFolder("a/");
...
}
這為每個測試提供了一個新的隨機臨時路徑,並在完成后將其刪除。 您可以通過在調試中運行它並查看每個測試用例的 dir 變量來驗證這一點。
我不確定在開箱即用的 MsTest 中是否可以像在其他測試框架(例如 MbUnit)中一樣使用此功能。
如果我必須使用 MsTest,那么我將通過定義具有[TestInitialize]
屬性的抽象類 TestBase 來解決這個問題,並且每個需要此行為的測試都源自此基類。 在您的情況下,程序集中的每個測試類都必須從這個基類繼承......
可能還有另一種解決方案,您可以制作自定義測試屬性 - 但我還沒有嘗試過... :)
我認為您正在尋找ClassInitialize
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.