2
我正在測試一個新的Win8商店應用程序(我的第一個應用程序如此裸露),並注意到我想避免的競爭條件。所以我正在尋找一種方法來避免這種競爭條件。避免競爭條件創建StorageFolder
我有一個類,當實例化時調用一個方法來確保它有一個本地StorageFolder。我的單元測試只是實例化對象並測試文件夾是否在那裏。有時文件夾不是,有時它是因爲我認爲這是一個競爭條件,因爲CreateFolderAsync是異步的(顯然)。
public class Class1
{
StorageFolder _localFolder = null;
public Class1()
{
_localFolder = ApplicationData.Current.LocalFolder;
_setUpStorageFolders();
}
public StorageFolder _LocalFolder
{
get
{
return _localFolder;
}
}
async void _setUpStorageFolders()
{
try
{
_localFolder = await _localFolder.CreateFolderAsync("TestFolder", CreationCollisionOption.FailIfExists);
}
catch (Exception)
{
throw;
}
}
}
我的單元測試是這樣的:
[TestMethod]
public void _LocalFolder_Test()
{
Class1 ke = new Class1();
// TODO: Fix Race Condition
StorageFolder folder = ke._LocalFolder;
string folderName = folder.Name;
Assert.IsTrue(folderName == "TestFolder");
}
感謝您閱讀我的文章。
這是一組唯一的測試?還有其他測試嗎?如果是的話,你在每個人之間建立和清理? – ScruffyDuck
爲什麼要創建文件夾異步?這不是一個非常耗時的操作,會導致戲劇性的性能損失 – lboshuizen
現在只是一個測試。 – ChiliYago