かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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

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

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