Tag: 模拟mstest

如何模拟Application.Current进行unit testing?

我有这个: 还有这个: public class GrayscaleEffect : ShaderEffect{ private static PixelShader _pixelShader = new PixelShader() { UriSource = new Uri(@”pack://application:,,,/Effects/GrayscaleEffect.ps”) }; /* … rest of the class … */ } 当我对它进行unit testing( MSTest )时,它显然会引发IOException (因为Application.Current为null,因此pack://application:,,,/…指向无处),并出现此错误: Assembly.GetEntryAssembly() returns null. Set the Application.ResourceAssembly property or use the pack://application:,,,/assemblyname;component/ syntax to specify the assembly to load the resource from. […]

将TDD回溯应用到C#代码库的最佳选择

我有一个由5个C#库组成的现有框架,该框架自2006年以来使用得很好,并且是我大多数项目的主要代码库。 我公司希望出于软件质量的原因推出TDD; 通过许多教程和阅读理论,我了解TDD的好处。 时间不是无限的我需要为实际的方法制定计划。 据我所知,我看到的选项是: A)可以使用一个测试项目来重叠来自所有5个库组件的对象。 一系列高级测试可能是最初被视为非常大的软件库的起点。 B)5个库组件中的每一个的测试项目。 这些项目将在最低级别测试function,与其他库组件隔离。 C)由于代码被广泛认为有效,因此只需对错误修复或新function添加unit testing。 使用重现错误的步骤编写一个测试,该测试在包含错误的逻辑上失败。 然后重新计算代码,直到测试通过。 现在您可以确信错误已得到修复,并且以后也不会在循环中引入 无论选择哪个选项,都可能需要“Mocking”来替换外部依赖项,例如: 数据库 网络服务 配置文件 如果有人有任何更多的输入,这将是非常有帮助的。 我计划在Visual Studio 2010中使用Microsoft内置的MSTest。