Tag: unit testing

如何模拟静态单例?

我有一些课程,我被要求添加一些unit testing与Rhino Mocks并有一些问题。 首先,我知道RhinoMocks不允许嘲笑静态成员。 我正在寻找我的选择(除了使用TypeMock)。 我所拥有的类的示例与以下类似: class Example1 : ISomeInterface { private static ISomeInterface _instance; private Example1() { // set properties via private static methods } static Example1() { _instance = new Example1(); } public static ISomeInterface Instance() { get { return _instance; } } // Instance properties // Other Instance Properties that represent objects […]

Rhino Mocks AAA快速入门?

我一直在寻找有关使用Rhino Mocks 3.5+和AAA语法的一些不错的信息。 我发现很多博客都混合了旧的和新的东西,似乎更难以弄清楚如何使用它。 如果有一个像早期版本那样的Rhino Mocks AAA Cheat Sheet,那将会很棒。 您是否需要了解有关旧版Rhino的所有内容才能真正使用新版本? 我敢肯定,如果我是专家,我会喜欢Rhino的所有function,但现在我只是在游泳信息。 任何指针或良好的链接将完全赞赏!

unit testing系统.timers.timer

我一直在阅读有关定时器和线程的unit testing的问题。 我找到了关于unit testingsystem.threading.timers的SO问题,但是我需要对system.timers.timer和包装类进行unit testing,这对于这个问题似乎并不顺利。 我只需要知道如何模拟计时器和/或系统时间,以便对它进行unit testing。 我似乎无法在谷歌的任何地方找到这个。 编辑和更新:有意义的是,如果我通过如下包装来提取计时器,我可以生成一个计时器并使用模拟将其替换为不同的计时器。 然后,相关部分将采用我在运行时注入的计时器(原始而不是模拟)并测试它已过去的事件代码。

使用NUnit在不同的appdomain中运行unit testing

我似乎遇到了一个问题,我们正在使用的应用程序使用Ninject内核,并包含一个使用WCF调用内容(username,token …)收集的特定配置。 基于特定配置,用户被分配了应用程序的权限,这通过Ninject内核中的特定实例进行屏蔽。 我们不能只重新组合Ninject内核,我们想要做的是运行几个Nunit测试,但是在一个单独的应用程序域中运行它们(每次使用不同的设置重新创建内核)。 我只找到了在不同应用领域运行整个测试项目的方法,但没有测试每个测试。 有办法解决这个问题吗? 不幸的是,Ninject配置不在我们这边,我们必须以这种方式“生活”。

如何改变存根的行为?

我可以在运行时更改存根的行为吗? 就像是: public interface IFoo { string GetBar(); } [TestMethod] public void TestRhino() { var fi = MockRepository.GenerateStub(); fi.Stub(x => x.GetBar()).Return(“A”); Assert.AreEqual(“A”, fi.GetBar()); fi.Stub(x => x.GetBar()).Return(“B”); Assert.AreEqual(“B”, fi.GetBar()); // Currently fails here } 我的代码示例在给定行中仍然失败, fi.GetBar()仍然返回”A” 。 或者是否有另一种技巧来模拟其行为随时间变化的存根? 我宁愿不使用fi.Stub(…).Do(…) 。 啊,可能我只是需要硬拷贝的精美手册让某人用它击中我的头部。 它看起来应该很明显,但我找不到它。

在unit testing中使用DI容器

我们一直在使用Simple Injector取得了很好的成功,在一个相当实际的应用程序中。 我们一直在为所有生产类使用构造函数注入,并配置Simple Injector来填充所有内容,而且一切都很好。 但是,我们没有使用Simple Injector来管理unit testing的依赖树。 相反,我们一直在手动创新。 我花了几天时间完成了一次重大的重构,几乎所有的时间都是在我们的unit testing中修复这些手动构造的依赖树。 这让我感到疑惑 – 有没有人有任何模式用于配置他们在unit testing中使用的依赖树? 对我们来说,至少在我们的测试中,我们的依赖树往往相当简单,但有很多。 任何人都有他们用来管理这些的方法吗?

AutoFixture.AutoMoq为一个构造函数参数提供已知值

我刚开始在我的unit testing中使用AutoFixture.AutoMoq ,我发现它对于创建我不关心特定值的对象非常有帮助。 毕竟,匿名对象创建就是它的全部。 我正在努力的是当我关心一个或多个构造函数参数时。 以下面的ExampleComponent : public class ExampleComponent { public ExampleComponent(IService service, string someValue) { } } 我想编写一个测试,其中我为someValue提供了一个特定的值,但是由AutoFixture.AutoMoq自动创建IService 。 我知道如何在我的IFixture上使用Freeze来保持一个已注入组件的已知值,但我不太明白如何提供我自己的已知值。 这是我理想的做法: [TestMethod] public void Create_ExampleComponent_With_Known_SomeValue() { // create a fixture that supports automocking IFixture fixture = new Fixture().Customize(new AutoMoqCustomization()); // supply a known value for someValue (this method doesn’t exist) string knownValue = […]

在VS2010中使用MSTest测试运行错误

当我运行我的unit testing时,所有测试都通过,但是不是“测试运行成功”或者无论成功消息是什么,我在小栏中得到“测试运行错误”,告诉我有多少测试通过,即使所有测试都通过我的测试通过。 当我点击文本时,我被带到一个页面,告诉我发生了以下两件事: 警告:测试运行部署期间发生冲突:测试容器[…] \ Booking.Web.Tests.dll直接或间接引用的部署项'[…] \ Booking.Web.dll’无法部署到’预订.Web.dll’因为否则文件'[…] \ Booking.Web.dll’将覆盖直接或间接由'[…]引用的部署项'[…] \ Booking.Web.dll’ \ Booking.Web.Tests.dll” 错误:无法初始化ASP.NET项目’Booking.Web’抛出exception:网站无法正确配置; 获取ASP.NET进程信息失败。 请求’ http:// localhost:54131 / VSEnterpriseHelper.axd ‘返回错误:远程服务器返回错误:(500)内部服务器错误。 我不明白它抱怨的一半。 我该如何摆脱这些错误? (供参考:Booking.Web是一个ASP.NET MVC 2项目,Booking.Web.Tests是一个测试项目,[…]是我环境中项目的完整本地路径,在上面的大多数情况下到Booking.Web项目内的/ bin / debug /文件夹) 更新:按照说明,我在事件查看器中查找了更多信息。 这是我发现的: 3008发生配置错误。 5/8/2010 2:26:15 AM 5/8/2010 12:26:15 AM 4ffbe9180c3d4c02adb9ac4d61dd0928 1 1 0 4484bbf4-1-129177519750954331 充分 / d:\ … \ Booking.Web \ AASLOEG 1876年 WebDev.WebServer40.EXE […]

DbSet mock,第二次调用ToList时没有结果

我正在尝试模拟DbContext和DbSet。 这适用于我之前的unit testing,但是当我的代码第二次在DbSet上调用ToList方法时出现问题。 首先dbSet.ToList()返回模拟结果。 第二个返回0个元素; var queryableData = new List{ “a”, “b”, “c” }.AsQueryable(); var mockDbSet = new Mock<DbSet>(); var q = mockDbSet.As<IQueryable>(); q.Setup(m => m.Provider).Returns(queryableData.Provider); q.Setup(m => m.Expression).Returns(queryableData.Expression); q.Setup(m => m.ElementType).Returns(queryableData.ElementType); q.Setup(m => m.GetEnumerator()).Returns(queryableData.GetEnumerator()); DbSet dbset = mockDbSet.Object; IQueryable query = dbset; //RESULTS: abc var a1 = dbset.ToList(); foreach (var a in a1) Console.Write(a); […]

unit testingWindows窗体应用程序的建议

我已经编写了一个Windows窗体应用程序,现在我想为它编写一些unit testing(不完全是测试驱动的开发,因为我在开发后编写测试但是迟到的时候从未好过!)我的问题是这样的应用程序你如何编写unit testing,因为几乎所有的方法和事件都是私有的? 我听说过NUnit Forms,但是我听到了它的优点和缺点,而且该项目暂时没有真正的发展,所以它看起来已经废弃了。 此外,如果我为用户通过点击/按下按钮触发的所有事件编写unit testing用例,或者我必须为所有人编写unit testing用例,那么该项目已经进行了足够的unit testing方法并找出一种方法来测试我的私有方法? 编辑:我的业务逻辑与我的表示逻辑分离,我的业务逻辑公开了1或2个公共方法,因此表单可以访问它们,但是业务逻辑中的所有私有方法呢?