使用Visual Studio 2010 RC执行TDD Silverlight 4 RC

时间:2010-03-30 03:28:35

标签: silverlight unit-testing visual-studio-2010 tdd silverlight-4.0

[编辑] 根据反馈是,VS2010似乎支持SL4库TDD,尽管在第一次创建测试时有一些奇怪的消息,表示测试无法针对Silverlight - 问题似乎消失了 - 我认为它可以归结为RC错误。我认为我现在真正的问题是如何TDD使用提升的OOB功能的独立库。 UI部件并不是库开发真正需要的,并且妨碍了我实际想要的TDD。我知道我可以(并且会)模拟一些功能,但在某些时候我也需要在我的测试中使用真实的东西。想要什么?

[原始问题] 首先,我很高兴在VS2010中看到更好的TDD支持。支持从我的测试生成代码存根是可行的 - 不如更成熟的TDD插件好,但是一个良好的开端。

我正在寻找一些最佳的Silverlight 4.0 TDD实践。 第一个问题:任何人都有链接,建议? 我知道新的Silverlight单元测试功能要好得多(Jeff Wilcox's Mix Presentation)。我现在关注的是使用TDD开发纯Silverlight 4.0类库项目 - 没有Silverlight UI项目的项目。我已经能够使它工作,但不是应该干净利落。

我可以创建一个空VS项目。

添加Silverlight 4类库项目。

添加一个TestProject(不是一个Silverlight单元测试项目,而是一个普通的测试项目)。

在Test Project中添加一个简单的测试,例如:

namespace Calculator.Test
{
    [TestClass]
    public class CalculatorTests
    {
        [TestMethod]
        public void CalulatorAddTest() {
            Calc c = new Calc();

            int expected = 10;
            int actual = c.Add(6, 4);

            Assert.AreEqual<int>(expected, actual);
        }
    }
}

使用新的Generate Type and Method from Test功能,它将在Silverlight项目中生成以下代码:

namespace Calculator
{
    public class Calc
    {
        public int Add(int p, int p_2) {
            throw new NotImplementedException();
        }
    }
}

当我第一次运行测试时,它说目标程序集是Silverlight并且无法运行测试 - 不是确切的文本,而是相同的一般想法。

当我将实现更改为:

namespace Calculator
{
    public class Calc
    {
        public int Add(int p, int p_2) {
            return p + p_2;
        }
    }
}

并重新运行测试,它运行正常,测试变为绿色。它也适用于我之后生成的所有其他TDD代码。我还在Test Project中对Calculator Silverlight类库程序集的引用中得到警告标记。

第二个问题:如果这只是VS2010 RC中的一个错误或Silverlight类库TDD不是真的支持,那么任何评论想法。 我还没有创建Silverlight UI项目或者更改并构建或调试设置,所以我不知道什么是托管silverlight DLL。

最后,我需要编写的一些Silverlight类库将提供需要提升的Out-Of-Browser权限的功能。基于上面的内容,看起来我可以对常规的Silverlight 4.0类库使用TDD测试项目,但我不知道如何在不创建安装的UI组件的情况下TDD升级的OOB功能。 UI部件并不是库开发真正需要的,并且妨碍了我实际想要的TDD。我知道我可以(并且会)模拟一些功能,但在某些时候我也需要在我的测试中使用真实的东西。 第三个​​问题:如何对需要OOB提升权限的TDD Silverlight 4.0类库项目提出任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

TDD肯定支持SL4,我建议查看MEF的源代码或SL4的CAL