かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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

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

例えばテストプロジェクトに、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());
            }
        }
    }
}