Tag: unit testing

使用FromAsyncPattern进行unit testing

Reactive Extensions有一个性感的小钩子来简化调用异步方法: var func = Observable.FromAsyncPattern( myWcfService.BeginDoStuff, myWcfService.EndDoStuff); func(inData).ObserveOnDispatcher().Subscribe(x => Foo(x)); 我在WPF项目中使用它,它在运行时运行良好。 不幸的是,当尝试使用这种技术的unit testing方法时,我遇到了随机故障。 包含此代码的测试的每五次执行中约有3次失败。 这是一个示例测试(使用Rhino / unity自动模拟容器实现): [TestMethod()] public void SomeTest() { // arrange var container = GetAutoMockingContainer(); container.Resolve() .Expect(x => x.BeginDoStuff(null, null, null)) .IgnoreArguments() .Do( new Func((inData, asyncCallback, state) => { return new CompletedAsyncResult(asyncCallback, state); })); container.Resolve() .Expect(x => x.EndDoStuff(null)) .IgnoreArguments() .Do( new […]

如何unit testing数据库依赖行为C#

我有一个与DB通信的C#应用​​程序。 我想测试一些依赖于DB的函数。 所以我想确保DB在每次测试运行之前都有一个初始状态。 我使用NUnit来测试我的应用程序。 有什么方法可以恢复DB的初始状态? 谢谢您的帮助!

如何使用Moq模拟SoapException以进行unit testingerror handling

我inheritance了一个调用SOAP Web服务的小型控制台应用程序。 这是一个嵌套的try-catches的悲剧性混乱,它以各种方式记录exception,并且我想围绕抛出SoapException时它的行为进行一些测试。 问题:当我无法模拟接口并且无法使属性或方法“虚拟”时,如何使用Moq模拟像SoapException这样的类? 再解释一下: 要测试此error handling,我需要控制SoapException对象的Actor属性,以及Detail属性以validationerror handling。 我的unit testing代码的片段: [TestMethod] public void MyTestMethod() { Mock soapMock = new Mock(MockBehavior.Strict); soapMock.SetupGet(ex => ex.Actor).Returns(“Test Actor”); 由于我正在模拟一个具体的类,并且Actor属性未标记为“Virtual”,因此在测试运行期间执行SetupGet(…)行时Moq会抛出此exception: System.NotSupportedException:非虚拟(在VB中可覆盖)成员上的无效设置:ex => ex.Actor 经过一些阅读,理想的答案是模拟一个界面,在这种情况下我无法做到。 由于这是.NET框架中的一个类,我也无法将Actor属性神奇地标记为虚拟。 我如何模拟SoapException,或者我可以通过不同的方式validationerror handling? 顺便说一下,我首先想要创建一个实际的SoapException,其中包含一些XML节点,但我很快就陷入了以编程方式创建XML文档树的漏洞。 我可以做到,但它需要更多的测试设置代码,如果可能的话,我想避免使用。

模拟DirectoryEntry的“属性”属性

我正在尝试对一些Active Directory代码进行unit testing,与此问题中概述的完全相同: 创建DirectoryEntry实例以用于测试 接受的答案建议为DirectoryEntry类实现一个包装器/适配器,我有: public interface IDirectoryEntry : IDisposable { PropertyCollection Properties { get; } } public class DirectoryEntryWrapper : DirectoryEntry, IDirectoryEntry { } 问题是我的IDirectoryEntry mock上的“ Properties ”属性未初始化。 试图像这样设置模拟: this._directoryEntryMock = new Mock(); this._directoryEntryMock.Setup(m => m.Properties) .Returns(new PropertyCollection()); 导致以下错误: 类型’System.DirectoryServices.PropertyCollection’没有定义构造函数 据我所知,当尝试仅使用内部构造函数实例化一个类时,会抛出此错误: 类型’…’没有定义构造函数 我试图为PropertyCollection类编写一个包装器/适配器但是没有公共构造函数我无法弄清楚如何从类中实例化或inheritance。 那么我如何在DirectoryEntry类上模拟/设置“ Properties ”属性以进行测试呢?

VS2015断点当前不会被击中。 没有为此文档加载任何符号

我有3个项目的解决方案。 项目一 – 图书馆 。 项目二 – 服务(asmx) 。 项目三 – 测试 。 在我的服务中,我有两个配置转换: PRODUCTION和TEST 。 它们是等于的,但数据库的名称是不同的。 我的解决方案 如果我使用PRODUCTION.config进行调试 ,那么就可以了 – 我的断点处于活动状态。 如果我用TEST.config 调试测试然后坏了。 我明白了: 可能是什么问题呢? 对不起我的英语不好。

VS2008unit testing – 断言方法退出

我正在尝试使用VS 2008的内置unit testing框架编写C#unit testing,我正在测试的方法是调用Environment.Exit(0) 。 当我在unit testing中调用此方法时,我的unit testing被中止。 该方法确实应该调用Exit ,我想要一种方法来测试它,并且还要测试它使用的退出代码。 我怎么能这样做? 我查看了Microsoft.VisualStudio.TestTools.UnitTesting命名空间,但没有看到任何看起来相关的内容。 [TestMethod] [DeploymentItem(“myprog.exe”)] public void MyProgTest() { // Want to ensure this Exit’s with code 0: MyProg_Accessor.myMethod(); } 同时,这是我要测试的代码的要点: static void myMethod() { Environment.Exit(0); } 编辑:这是我在测试方法中使用的解决方案,感谢RichardOD : Process proc; try { proc = Process.Start(path, myArgs); } catch (System.ComponentModel.Win32Exception ex) { proc = null; Assert.Fail(ex.Message); […]

使用Selenium 2的IWebDriver与页面上的元素进行交互

我正在使用Selenium的IWebDriver在C#中编写unit testing。 这是一个例子: IWebDriver defaultDriver = new InternetExplorerDriver(); var ddl = driver.FindElements(By.TagName(“select”)); 最后一行检索包含在IWebElement的select HTML元素。 我需要一种方法来模拟select列表中的特定option ,但我无法弄清楚如何做到这一点。 经过一些研究 ,我找到了人们使用ISelenium DefaultSelenium类来完成以下操作的ISelenium DefaultSelenium ,但我没有使用这个类,因为我正在使用IWebDriver和INavigation (来自defaultDriver.Navigate() )。 我还注意到ISelenium DefaultSelenium包含许多其他方法,这些方法在IWebDriver的具体实现中IWebDriver 。 那么有什么方法可以将IWebDriver和INavigation与ISelenium DefaultSelenium结合使用?

C#压力测试 – 模拟对给定共享资源的多次访问

如何在ac#unit test中模拟/压力测试大约100个访问给定共享资源(例如数据库)的用户?

犀牛嘲笑部分模拟

我试图从一些现有的类测试逻辑。 由于它们非常复杂并且在生产中,因此不可能重新考虑目前的类别。 我想要做的是创建一个模拟对象并测试一个内部调用另一个非常难以模拟的方法的方法。 所以我想为次要方法调用设置一个行为。 但是当我设置方法的行为时,方法的代码被调用并失败。 我是否遗漏了某些东西,或者这是不可能在没有重新分类的情况下进行测试? 我已经尝试了所有不同的模拟类型(Strick,Stub,Dynamic,Partial等),但是当我尝试设置行为时,它们都会调用该方法。 using System; using MbUnit.Framework; using Rhino.Mocks; namespace MMBusinessObjects.Tests { [TestFixture] public class PartialMockExampleFixture { [Test] public void Simple_Partial_Mock_Test() { const string param = “anything”; //setup mocks MockRepository mocks = new MockRepository(); var mockTestClass = mocks.StrictMock(); //record beahviour *** actualy call into the real method stub *** Expect.Call(mockTestClass.MethodToMock(param)).Return(true); //never […]

unit testing自定义Web API AuthorizeAttribute

我正在尝试使用C#中的NUnit进行unit testing,这是一个自定义的授权属性。 特别是在未被授权的情况下已经返回了特定的http状态代码和消息。 我的属性非常简单 – 看起来像这样: public class AuthorizationAttribute : AuthorizeAttribute { public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) { if (IsAuthorized(actionContext)) return; HandleUnauthorizedRequest(actionContext); } protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext) { actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Forbidden, “You are not authorized to access this resource”); } } 所以为了测试这个(目前在测试领域是新的)我拼凑了下面的代码。 在其中,我附加了一个通用标识与用户名和一些角色数据。 public void Given_UserIsNotInAuthorizedRoles_When_Auhtorizing_ReturnsForbidden() { // Arrange IPrincipal principal = new GenericPrincipal(new […]