Tag: unit testing

如何对ASP.NET Web API路由进行unit testing?

我正在尝试编写一些unit testing,以确保对我的Web API发出的请求被路由到具有预期参数的预期API控制器操作。 我试图使用HttpServer类创建一个测试,但我从服务器得到500个响应,没有信息来调试问题。 有没有办法为ASP.NET Web API站点的路由创建unit testing? 理想情况下,我想使用HttpClient创建一个请求,让服务器处理请求并将其传递给预期的路由进程。

如何在unit testing中获取运行时的unit testing方法名称?

如何从单元内测试中获取unit testing名称? 我在BaseTestFixture类中有以下方法: public string GetCallerMethodName() { var stackTrace = new StackTrace(); StackFrame stackFrame = stackTrace.GetFrame(1); MethodBase methodBase = stackFrame.GetMethod(); return methodBase.Name; } 我的Test Fixture类inheritance自基类: [TestFixture] public class WhenRegisteringUser : BaseTestFixture { } 我有以下系统测试: [Test] public void ShouldRegisterThenVerifyEmailThenSignInSuccessfully_WithValidUsersAndSites() { string testMethodName = this.GetCallerMethodName(); // } 当我从Visual Studio中运行它时,它会按预期返回我的测试方法名称。 当这由TeamCity运行时,而是返回_InvokeMethodFast() ,这似乎是TeamCity在运行时为自己使用而生成的方法。 那么如何在运行时获取测试方法名称?

那里最好的Nunit测试跑者是什么?

最近进入测试驱动开发我使用Nunit测试运行器作为resharper的一部分。 它有一些缺点,没有运行测试的快捷方式,我必须去寻找Nunit测试运行器,使用鼠标调用它。 它有一个很好的GUI,并将结果显示为IDE的一部分。 其他人用什么来运行针对.net项目的unit testing? 我搜索了其他应用程序,包括来自Nunit.org的MBUnit和unit testing应用程序,并想知道最重要的是什么。

MOQ – LINQ在设置方法中的谓词

在我的方法中,我有我的存储库这样做: bool isConditionMet = MyRepository.Any(x => x.Condition == true); 我试图使用MOQ来模拟这样: MyMockedRepository.Setup(x => x.Any(y => y.Condition == true)).Returns(true); 但是,当代码执行时,存储库调用始终返回false。 有没有办法用MOQ做到这一点? **编辑 – 每个请求添加代码** 我正在使用NHibernate所以我的Any方法在我的基础存储库中,并实现如下: public virtual bool Any(Expression<Func> predicate) { return Session.Query().Cacheable().Any(predicate); }

无法启动Windows Phone模拟器

我正在尝试在CI服务器上运行unit testing。 当我运行以下命令时,它尝试启动模拟器,但失败并显示以下消息 vstest.console.exe myxapfile.xap 错误信息 The Windows Phone Emulator wasn’t able to ensure the virtual machine was running: Something happened while starting a virtual machine: ‘Emulator WVGA 512MB.ttmaltiparmak’ failed to start. (Virtual machine ID 1350ADCE-CC35-4615-BFD5-250179F789EE) The Virtual Machine Management Service failed to start the virtual machine ‘Emulator WVGA 512MB.ttmaltiparmak’ because one of the Hyper-V […]

unit testing异步function

在下面的代码示例中,我有一个Async Calculator类。 这是注入一个ICalc,它将是一个同步计算器。 我使用dependency injection和模拟ICalc,因为这类似于我的真实场景,尽管我猜嘲笑并不是真正与问题相关。 AsyncCalc有一个函数,它将异步调用另一个函数 – 将回调作为参数。 当异步函数调用完成时,将使用结果触发回调。 现在我想测试我的异步函数 – 检查回调是否被期望参数触发。 这段代码似乎有效。 但是,我觉得它可能随时都会爆炸 – 我的担心是在函数结束和测试终止之前完成回调的竞争条件 – 因为这将在一个单独的线程中运行。 我现在的问题是,如果我在正确的轨道单元上测试异步function,或者是否有人可以帮助我走上正轨……? 更好的是,如果我能确保立即触发回调 – 最好是在同一个线程上我猜? 可以/应该这样做吗? public interface ICalc { int AddNumbers(int a, int b); } public class AsyncCalc { private readonly ICalc _calc; public delegate void ResultProcessor(int result); public delegate int AddNumbersAsyncCaller(int a, int b); public AsyncCalc(ICalc […]

如何在ASP.NET MVC 4 Web API中测试自定义DelegatingHandler?

我已经看到这个问题出现在一些地方,没有看到任何好的答案。 因为我必须自己做几次,我以为我会发布我的解决方案。 如果你有更好的,请发布。 NB这是使用ASP.NET MVC 4 Beta 2版本的Web API – 未来的版本可能会改变! 更新:这仍然适用于ASP.NET MVC 4 RC

我为什么要进行unit testing和Web测试(而不仅仅是网络测试)?

我目前的立场是:如果我使用Web测试(在我的情况下通过VS.NET’08测试工具和WatiN,可能)使用代码覆盖率和广泛的数据彻底测试我的ASP.NET应用程序,我应该没有需要编写单独的unit testing,因为我的代码将通过所有层与UI一起进行测试。 代码覆盖将确保我能够访问每个function代码(或显示未使用的代码),并且我可以提供涵盖所有合理预期条件的数据。 但是,如果您有不同的意见,我想知道: unit testing给出的额外好处是certificate将其包含在项目中的努力是合理的(请记住,我正在进行Web测试,因此在许多情况下,unit testing将涵盖Web测试已经涵盖的代码)。 你能用详细的例子详细解释你的理由吗? 我经常看到诸如“这不是它的意义”或“它促进更高质量”的回应 – 这实际上并没有解决我必须面对的实际问题,也就是说,我怎么能certificate – 有实际结果 – 支出更多时间测试?

使用扩展方法定义的查询进行unit testing

在我的项目中,我使用以下方法从数据库中查询数据: 使用可返回任何类型且不绑定到一种类型的通用存储库,即IRepository.Get而不是IRepository.Get 。 NHibernates ISession就是这样一个存储库的一个例子。 使用具有特定T IQueryable上的扩展方法来封装重复查询,例如 public static IQueryable ByInvoiceType(this IQueryable q, InvoiceType invoiceType) { return q.Where(x => x.InvoiceType == invoiceType); } 用法如下: var result = session.Query().ByInvoiceType(InvoiceType.NormalInvoice); 现在假设我有一个我要测试的公共方法使用此查询。 我想测试三种可能的情况: 查询返回0个发票 查询返回1张发票 查询返回多个发票 我现在的问题是:要嘲笑什么? 我不能模拟ByInvoiceType因为它是一个扩展方法,或者我可以吗? 我出于同样的原因甚至无法模拟Query 。

unit testingASP.NET MVC5应用程序

我正在通过添加一个新属性来扩展ApplicationUser类(如教程中所示, 使用Facebook和Google OAuth2和OpenID登录创建一个ASP.NET MVC 5应用程序(C#) ) public class ApplicationUser : IdentityUser { public DateTime BirthDate { get; set; } } 现在我想创建一个unit testing来validation我的AccountController是否正确保存了BirthDate。 我创建了一个名为TestUserStore的内存用户存储 [TestMethod] public void Register() { // Arrange var userManager = new UserManager(new TestUserStore()); var controller = new AccountController(userManager); // This will setup a fake HttpContext using Moq controller.SetFakeControllerContext(); // Act var result […]