2013-03-19 63 views
1

正如標題所說 - 我無法找到包含帶有Windows Store測試項目的文件的方式。 (A標準的.NET測試項目工作正常)MSTest - DeploymentItem屬性在Windows Store測試項目上不可用

右鍵單擊該解決方案,並執行:添加新的項目 - > C# - > Windows應用商店 - >單元測試庫(Windows應用商店的應用程序)

你得到這個樣板,我添加了DeploymentItem屬性:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 

namespace UnitTestLibrary1 
{ 
    [TestClass] 
    public class UnitTest1 
    { 
     [TestMethod] 
     // this does not compile; DeploymentItem attribute not found 
     [DeploymentItem("wibble.txt")] 
     public void TestMethod1() 
     { 
     } 
    } 
} 

那麼我錯過了什麼?在Windows Store單元測試中是否包含數據是不可能的,還是我需要不同的方法?

回答

0

DeploymentItem包含在Microsoft.VisualStudio.TestTools.UnitTesting命名空間中,您沒有參考。

您必須添加對Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll的引用。

+1

一個windows store測試項目在WinRT下運行,它的沙箱很大,所以你不能只添加對標準.NET DLL的引用。我確實嘗試直接瀏覽到UnitTestFramework DLL來添加它,但它仍然不想識別該屬性。 – MarcE 2013-03-19 12:09:27

1

我一直在部署數據文件的方式是使用後構建副本。我在我的項目下有一個名爲「TestData」的目錄下的數據,它在構建之後被複制到輸出。

以下線在我的測試項目屬性的「生成事件」選項卡中設置:

if not exist "$(TargetDir)AppX" mkdir "$(TargetDir)AppX" 
if not exist "$(TargetDir)AppX\TestData" mkdir "$(TargetDir)AppX\TestData" 
copy /Y "$(TargetDir)TestData\*.*" "$(TargetDir)AppX\TestData\" 

有兩點要注意:

  • 我的單元測試是指對數據文件的下目錄TestData,而不是AppX\TestData
  • 上述生成後操作只會將已在項目中設置的文件複製爲1)內容文件和2)複製到輸出中。
0

使用@柱先生-X生成事件,然後按[TestInitialize]是這樣的:

 var site = "TestData"; 
     var appx = Package.Current.InstalledLocation; 
     var reposTestFolder = await appx.GetFolderAsync(site); 
     var testFiles = await reposTestFolder.GetFilesAsync(); 

     var localfolder = ApplicationData.Current.LocalFolder; 
     var reposFolder = await localfolder.CreateFolderAsync(site, CreationCollisionOption.OpenIfExists); 
     foreach (var file in testFiles) 
     { 
      await file.CopyAsync(reposFolder); 
     } 

現在TESTDATA可用於測試應用程序。

相關問題