2013-03-19 60 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可用于测试应用程序。

相关问题