1

我一直在寻找能够在 Windows Phone 7 应用程序开发中测试异步功能调用的单元测试框架。是的,单元驱动是我眼前出现的一个。但是,该框架不像 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 express 总是抱怨它找不到符号 GetContext()

UnitTestContext context = GetContext();

3) UD 附带了三个 dll。UnitDrivenLight、UnitDrivenPhone、UnitDrivenNet……那么,UnitDrivenLight和UnitDrivenPhone的作用是什么?目前非常混乱。

谢谢

西莫

4

2 回答 2

1

我自己没有使用过 UnitDriven,但我在 Windows Phone Toolkit 附带的测试框架(支持异步测试)方面取得了成功。

事实上,我已经创建了一个添加命令行支持的修改版本。它在 NuGet 中作为wp7-ci(自定义 MSBuild 任务使手动安装复杂化)。

于 2011-07-17T21:41:01.823 回答
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();
        }
    }
}
于 2011-11-03T11:26:24.797 回答