MSTest - 在Windows商店测试项目中,DeploymentItem属性不可用

时间:2013-03-19 11:08:47

标签: c# mstest windows-store-apps deploymentitem

正如标题所说 - 我找不到一种方法来包含带有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商店单元测试中包含数据,还是需要不同的方法?

3 个答案:

答案 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)内容文件和2)复制到输出。

答案 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可供测试的应用程序使用。