正如标题所说 - 我找不到一种方法来包含带有Windows商店测试项目的文件。 (标准的.NET测试项目工作正常)
右键单击解决方案并执行:添加新项目 - > 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商店单元测试中包含数据,还是需要不同的方法?
答案 0 :(得分: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 :(得分:0)
DeploymentItem包含在Microsoft.VisualStudio.TestTools.UnitTesting
命名空间中,您没有参考。
您必须添加对Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
的引用。
答案 2 :(得分:0)
使用@ chue-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可供测试的应用程序使用。