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