Tag: nunit

如何写入NUnit gui runner的Log选项卡和Console.Error选项卡

在NUnit Gui Runner中,有6个选项卡。 我可以写入Console.Out写一些类似于: Console.WriteLine(“This will end up in the Console.Out”); 我可以通过写下以下内容来写入Trace选项卡: System.Diagnostics.Trace.WriteLine(“This will end up on the Trace tab”); 但是如何写入其他两个选项卡“Log”和“Console.Error”?

NUnit:字典断言

我想在NUnit中使用一个衬垫来断言两个字典是否相同。 即,我想要一个以下代码的简洁版本: public static void DictionaryAssert(Dictionary dictionaryResult, Dictionary expectedResult) { Assert.AreEqual(dictionaryResult.Count, expectedResult.Count); foreach (var aKey in expectedResult.Keys) { Assert.AreEqual(expectedResult[aKey], dictionaryResult[aKey]); } } 当然不是那么困难,但我找不到参考,任何想法?

FluentAssertions:排序列表的等价性

我正在尝试使用C#中的FluentAssertions建立两个列表的等价,其中两件事很重要: 元素通过它们持有的值进行比较,而不是通过引用进行比较(即它们是等价的,不相等) 列表中元素的顺序很重要 FluentAssertions(甚至是NUnit)中没有这样做的function吗? 干杯!

如何使用NUnit和Rhino Mocks模拟HttpContext.Current.Items

我正在使用NUnit和RhinoMocks进行(WebApi)项目的unit testing。 我正在尝试编写一个测试方法,它应该向HttpContext.Current.Items添加一个项目。 public override void OnActionExecuting(HttpActionContext actionContext) { HttpContext.Current.Items.Add(“RequestGUID”, Guid.NewGuid()); base.OnActionExecuting(actionContext); } 我不知道在测试方法中运行时如何使HttpContext.Current.Items可用于该方法。 我怎样才能做到这一点? 另外,如何检查项目是否已添加(可以/应该使用哪种断言)

在其之前创建Form时,其中包含Application循环的NUnit测试会挂起

我有一些使用MessageLoopWorker包装的WebBrowser控件的测试,如下所述: WebBrowser Control在一个新线程中 但是当另一个测试创建用户控件或表单时,测试会冻结并永远不会完成: [Test] public async Task WorksFine() { await MessageLoopWorker.Run(async () => new {}); } [Test] public async Task NeverCompletes() { using (new Form()) ; await MessageLoopWorker.Run(async () => new {}); } // a helper class to start the message loop and execute an asynchronous task public static class MessageLoopWorker { public static […]

NUnit与ASP.NET网站

我正在尝试升级我们的构建服务器,从没有构建服务器到拥有一个! 我正在使用JetBrains的TeamCity (使用ReSharper几年,我相信他们的东西),并打算使用NUnit和MSBuild 。 但是,我提出了一个问题:似乎无法使用NUnit测试ASP.NET网站。 我曾经假设可以将它配置为在构建之后测试App_Code,但似乎很好地进行测试的唯一方法是将网站转换为Web应用程序(我的老板不喜欢这个想法)。 我怎么能这样做? 请记住,测试需要能够从TeamCity自动触发。

Selenium Grid使用C#/ NUnit进行并行测试

我已经用NUnit编写了几个调用selenium命令的unit testing。 我有2个win2k3服务器盒设置,一个运行selenium网格集线器和2个selenium rc。 另一个盒子正在运行5个selenium rc。 所有这些都在集线器中注册为在Windows上运行Firefox(为了保持简单)。 在我的unit testing设置方法中,我已经将它连接到端口4444处的集线器主机名。 运行测试时,它们只按顺序运行(如预期的那样)。 我已经对NUnit的路线图以及它们如何为并行测试能力进行了大量阅读。 在此期间,我已经看到很多关于使用PNUnit的指示。 然而,这似乎完全打败了Selenium Grid的目的。 有没有人使用连接到Selenium Grid设置的C#/ NUnit成功实现了并行测试? 如果是这样,请详细说明。 我现在完全不知道如何使用NUnit,因为它现在存在(我使用的是版本2.9.3)

使用UnitofWork Pattern的Rhino Mock Entity Framework无法正常工作

这是我第一次尝试这样的事情,所以希望这很简单。 我创建了一个WCF服务,它使用Entity Framework来访问数据库。 我已经实现了UnitOfWork接口,因此我的服务可以使用EF,同时仍然可以测试。 这是我的服务: public class ProjectService : IProjectService { private IUnitOfWork db = null; public ProjectService(IUnitOfWork unitofwork) { db = unitofwork; } public int RegisterSite(int CPUID) { if (db.Servers.Count(x => x.CPUID == CPUID) > 0) { // do something } return 0; } } 这是我的UnitOfWork界面: public interface IUnitOfWork { IObjectSet Clients { get; […]

发布版本中的nunit:“公共语言运行时检测到无效程序。”

我将软件从vs2008 / .net 3.5升级到vs2010 / .net 4.0。 所有第三方库(最相关:nhibernate 2.1.2或3.0.0,nunit 2.5.2)仍然使用vs2008进行编译。 当我运行我们软件的调试版本的unit testing时,一切正常。 在发布版本中,nunit报告228个测试中的33个的exception: System.InvalidProgramException : Common Language Runtime detected an invalid program. 对于nunit-console和Resharper 5.0测试运行器,它总是在相同的测试中发生。 当我使用Resharper“debug unit-tests”命令运行它们时,所有测试都通过。 无论是单独运行还是批量运行,都没有区别。 exception总是发生在nhibernate查询调用附近,但我不能肯定地说,因为发布构建堆栈跟踪有点稀疏。 它不依赖于nhibernate字节码生成器,对于castle和linfu也会出现相同的exception。 有谁知道如何调试这个? 编辑:删除Spring.NET对此问题没有影响。 编辑:当我将release config debug输出切换为full而不是pdb并停用优化代码复选框时,exception消失。 这两个设置都是必需的,如果我只改变其中一个,那么bug仍然存在。 但是,如果我只更改一个,则会有一组不同的测试失败。 所有类库都是针对Any CPU编译的。

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 […]