1

正如标题所说 - 我找不到将文件包含在 Windows 商店测试项目中的方法。(标准的 .NET 测试项目可以正常工作)

右键单击解决方案并执行:添加新项目 -> C# -> Windows Store -> 单元测试库(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 存储单元测试中包含数据,还是我需要不同的方法?

4

3 回答 3

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) 复制到输出。
于 2013-03-19T13:30:57.870 回答
0

DeploymentItem包含在Microsoft.VisualStudio.TestTools.UnitTesting您没有引用的命名空间中。

您必须添加对Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll.

于 2013-03-19T11:56:30.800 回答
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 可用于被测应用程序。

于 2016-03-24T22:34:29.493 回答