正如标题所说 - 我无法找到包括与Windows应用商店的测试项目中的文件的方式。 (A标准的.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应用商店的单元测试数据,或者我需要一种不同的方法?
我一直在部署数据文件的方法是使用一个生成后的副本。 我有我的数据在我的项目一个名为“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)复制到输出文件。
DeploymentItem被包含在Microsoft.VisualStudio.TestTools.UnitTesting
中,你是不是有一个参考的命名空间。
你要添加到基准Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
。
使用@柱先生-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可用于测试应用程序。
文章来源: MSTest - DeploymentItem attribute unavailable on windows store test project