2012-11-26 35 views
0

打开的文件,我写一个单元测试,以验证对象的序列化,我能够成功地保存文件没有任何问题。我甚至可以浏览文件并验证内容是否正确。但是,当我尝试打开文件进行阅读时,我总是收到UnauthorizedAccess异常。不能在WinRT中的单元测试

这里是用来保存项目代码:

 public static async Task SaveItem<T>(string folderName, T item) 
     where T : BaseBusinessItem 
    { 
     if (string.IsNullOrEmpty(folderName)) 
     { 
      throw new ArgumentNullException("folderName"); 
     } 

     if (item == null) 
     { 
      throw new ArgumentNullException("item"); 
     } 

     try 
     { 
      var folder = await ApplicationData.Current.LocalFolder 
              .CreateFolderAsync(folderName, CreationCollisionOption.OpenIfExists); 
      var file = 
       await 
       folder.CreateFileAsync(item.UniqueID.GetHashCode().ToString(), CreationCollisionOption.ReplaceExisting); 
      var stream = await file.OpenAsync(FileAccessMode.ReadWrite); 
      using (var outStream = stream.GetOutputStreamAt(0)) 
      { 
       var serializer = new DataContractJsonSerializer(typeof(T)); 
       serializer.WriteObject(outStream.AsStreamForWrite(), item); 
       await outStream.FlushAsync(); 
      } 
     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine(ex.ToString()); 
     } 
    } 

这里是用来恢复项目的代码:

public static async Task<T> RestoreItem<T>(string folderName, string hashCode) 
     where T : BaseBusinessItem, new() 
    { 
     if (string.IsNullOrEmpty(folderName)) 
     { 
      throw new ArgumentNullException("folderName"); 
     } 

     if (string.IsNullOrEmpty(hashCode)) 
     { 
      throw new ArgumentNullException("hashCode"); 
     } 

     var folder = await ApplicationData.Current.LocalFolder.GetFolderAsync(folderName); 
     var file = await folder.GetFileAsync(hashCode); 
     var inStream = await file.OpenSequentialReadAsync(); 
     var serializer = new DataContractJsonSerializer(typeof(T)); 
     var retVal = (T)serializer.ReadObject(inStream.AsStreamForRead()); 
     return retVal; 
    } 

而且单元测试:

[TestMethod] 
    public async Task TestFileSaveLoad() 
    { 
     await _ds.SaveItem("TestFolder"); 
     Guid ID = _item.UniqueID; 
     _ds = await ItemDataSource.LoadItem("TestFolder", ID.GetHashCode().ToString()); 
    } 

任何想法或疑难解答步骤我可能会丢失。单元测试应用程序清单包含以下功能:文档库,Internet(客户端)。以下声明是到位:文件打开选取器,文件保存选取器和文件类型关联。

谢谢!

+0

它经常上线失败,VAR inStream中开始= file.OpenSequentialReadAsync(); –

回答