MSTest的 - DeploymentItem在Windows应用商店测试项目的属性不可用(MS

2019-10-17 20:14发布

正如标题所说 - 我无法找到包括与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应用商店的单元测试数据,或者我需要一种不同的方法?

Answer 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)复制到输出文件。


Answer 2:

DeploymentItem被包含在Microsoft.VisualStudio.TestTools.UnitTesting中,你是不是有一个参考的命名空间。

你要添加到基准Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll



Answer 3:

使用@柱先生-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