簡體   English   中英

在Windows 8(C#/ XAML)中對MediaElement進行單元測試

[英]Unit testing MediaElement in Windows 8 (C#/XAML)

我有一個嘗試使用MediaElement編寫類的類,但是我不知道如何對與MediaElement交互的部分進行單元測試。 具體來說,我想確保打開文件會觸發正確的代碼,並且我自己的類的狀態與MediaElement的狀態一起更新。

我正在使用此處提到的ExecuteOnUIThread()技巧來創建和使用MediaElement,因為否則我將獲得RPC_E_WRONG_THREAD異常。

然后,我將使用此技巧來測試我自己類的事件,這些事件連接到MediaElement自己的MediaOpened和CurrentStateChanged事件。

但是,無論我將WaitOne設置為多長時間,從Internet打開MP3文件時都看不到任何激活的信息。 我嘗試繞過我自己的類並直接測試MediaElement,但是事件似乎根本沒有觸發。

這是我正在使用的測試方法:

[TestMethod]
public async Task TestMethod1()
{
    await ExecuteOnUIThread(() =>
    {
        var me = new MediaElement();
        bool opened = false;
        var mre = new ManualResetEvent(false);
        me.MediaOpened += delegate
        {
            opened = true;
            mre.Set();
        };
        me.Source = new Uri("http://dl.dropbox.com/u/52389/test-song.mp3");
        mre.WaitOne(5000);

        Assert.IsTrue(opened);
    });
}

命令后,檢查CurrentState(Windows.UI.Xaml.Media.MediaElementState); 應該反映出您的行為。 如果您不確定緩沖是否有足夠的時間並且不想等待,可以,那么您可以檢查多個。 例如,以下是選項:

Closed = 0
Opening = 1
Buffering = 2
Playing = 3
Paused = 4
Stopped = 5

調用Play()之后,您可以檢查(打開|緩沖|播放)。 明白了嗎? 同時,您可以檢查它不應該是什么!(關閉|暫停|停止)。 等等。 您可能無法通過一點ole單元測試來檢查流本身。 但是您應該能夠檢查狀態。

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM