如何使用Unit Driven为windows phone 7应用程序开发编写单元测试?

时间:2011-07-17 20:00:22

标签: testing windows-phone-7 unitdriven

我一直在搜索能够在Windows Phone 7应用程序开发中测试异步函数调用的Unit Test框架。是的,单位驱动是我眼中突然出现的一个。但是,该框架不像NUnit那样对开发人员友好(遗憾的是它无法测试异步方法)。在互联网上,人们一直在使用UD进行单元测试。有人可以投入并提供一些建议吗?

我的具体问题是:

1)我在哪里包含以下初始化代码?

private void Application_Startup(object sender, StartupEventArgs e)
{
      this.RootVisual = new UnitDriven.TestEngine(Assembly.GetExecutingAssembly());
}

2)如何为UD编写测试用例?使用NUnit,我可以编写测试用例和我的应用程序,NUnit加载我的dll并执行测试。我试图把我的应用程序放进去,但Visual Studio 2010快递总是抱怨它找不到符号GetContext()

UnitTestContext context = GetContext();

3)UD有三个dll。 UnitDrivenLight,UnitDrivenPhone,UnitDrivenNet ......那么,UnitDrivenLight和UnitDrivenPhone的角色是什么?此刻非常混乱。

由于

西莫

2 个答案:

答案 0 :(得分:1)

我自己没有使用过UnitDriven,但是我已经成功使用了Windows Phone Toolkit(支持异步测试)附带的测试框架。

事实上,我已经创建了modified version,它增加了命令行支持。它在NuGet中为wp7-ci(自定义MSBuild任务使手动安装变得复杂)。

答案 1 :(得分:0)

最后,根据Szalay的提示,我转而使用Microsoft的sliverlight测试框架进行异步测试,这是示例测试类:

namespace TestApp
{
    using System.Threading;
    using Microsoft.Silverlight.Testing;
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    /// <summary>
    /// An example test class
    /// </summary>
    [TestClass]
    public class ExampleTestClass : SilverlightTest
    {

        /// <summary>
        /// Sample asynchronous test
        /// </summary>
        [TestMethod, Tag("Asynchronous Test"), Asynchronous]
        public void SampleAsynchronousTest()
        {
            ThreadPool.QueueUserWorkItem(o =>
                {
                    for (int j = 0; j < 10000; j++){}
                    CheckResult(10);
                });
        }

        /// <summary>
        /// Check result
        /// </summary>
        /// <param name="variable">result</param>
        private void CheckResult(int variable)
        {
            Assert.IsTrue(variable == 10);
            EnqueueTestComplete();
        }
    }
}