かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

ストアアプリの単体テストプロジェクトで出力ディレクトリにコピーしたファイルを読み込む

サンプルデータとかを読み込みたいらしいです。

例えばテストプロジェクトに、TextFile1.txtという名前のファイルを作って中身を以下のようにします。

Hello world

コンテンツにして、出力フォルダにコピーするようにプロパティを構成します。

f:id:okazuki:20140803152934p:plain

このファイルを単体テスト内で読み込むには、Package,Current.InstallLocationのGetFileAsyncを使ってStorageFileを取得してごにょごにょします。とりあえずファイル内の文字列をアサートするならこんな感じ。

using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
using System;
using System.IO;
using System.Threading.Tasks;
using Windows.ApplicationModel;

namespace UnitTestLibrary1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public async Task TestMethod1()
        {
            var file = await Package.Current.InstalledLocation.GetFileAsync("TextFile1.txt");
            Assert.IsNotNull(file);

            using (var r = await file.OpenReadAsync())
            using (var s = new StreamReader(r.AsStream()))
            {
                Assert.AreEqual("Hello world", (await s.ReadToEndAsync()).Trim());
            }
        }
    }
}