Как написать модульные тесты, используя Unit Driven для разработки приложений для Windows Phone 7?

Я искал платформу Unit Test, которая способна тестировать асинхронные функциональные вызовы при разработке приложений для 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) Было три dll с UD. UnitDrivenLight, UnitDrivenPhone, UnitDrivenNet... Итак, каковы роли UnitDrivenLight и UnitDrivenPhone? Очень запутанно в данный момент.

Спасибо

Симо

2 ответа

Я сам не использовал UnitDriven, но у меня был успех с тестовой средой, которая поставляется с Windows Phone Toolkit (который поддерживает асинхронные тесты).

На самом деле, я создал модифицированную версию, которая добавляет поддержку командной строки. Это в NuGet, как wp7-ci (пользовательская задача MSBuild усложняет ручную установку).

В конце концов, с подсказками Сзалая, я перешел на использование тестового фреймворка Microsoft для асинхронных тестов, вот пример тестового класса:

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();
        }
    }
}
Другие вопросы по тегам