Tag: unit testing

Moq:unit testing一个依赖于HttpContext的方法

考虑.NET程序集中的一个方法: public static string GetSecurityContextUserName() { //extract the username from request string sUser = HttpContext.Current.User.Identity.Name; //everything after the domain sUser = sUser.Substring(sUser.IndexOf("\\") + 1).ToLower(); return sUser; } 我想从使用Moq框架的unit testing中调用这个方法。 这个程序集是webforms解决scheme的一部分。 unit testing看起来像这样,但我缺lessMoq代码。 //arrange string ADAccount = "BUGSBUNNY"; string fullADName = "LOONEYTUNES\BUGSBUNNY"; //act //need to mock up the HttpContext here somehow — using Moq. string foundUserName […]

为什么datetime不能比较?

我的C#unit testing有以下说法: Assert.AreEqual(logoutTime, log.First().Timestamp); 以下信息为何失败: Assert.AreEqual failed. Expected:<4/28/2010 2:30:37 PM>. Actual:<4/28/2010 2:30:37 PM>. 他们不一样吗? 更新: 如果你只关心第二个,请使用这个: Assert.AreEqual(logoutTime.ToString(), log.First().Timestamp.ToString());

在UI中执行业务逻辑的unit testing数据库应用程序

我自己pipe理一个相当大的应用程序(5万行代码),它pipe理一些相当关键的业务行为。 为了简单描述这个程序,我想说这是一个能够显示和更改数据库数据的奇特UI,它pipe理着大约1000个出租单位,大约3万个租户和所有的财务。 当我做出改变的时候,因为代码基础太大,我有时候会在别的地方把事情弄坏。 我通常testing它通过去function级别(即我运行该程序,通过用户界面工作)的东西,但我不能testing任何情况。 这就是为什么我想要开始unit testing。 但是,这不是一个真正的三层程序,具有数据库层,业务层和UI层。 许多业务逻辑在UI类中执行,许多事情都是在事件上完成的。 让事情变得复杂,一切都是数据库驱动的,而且我还没有看到(迄今为止)关于如何unit testing数据库交互的好build议。 怎样才能开始这个应用程序的unit testing。 记住。 我从来没有做过unit testing或TDD。 我应该重写它以从UI类中删除业务逻辑(很多工作)吗? 或者,还有更好的方法?

实现一个HashMap

如何去从头开始在C中创build一个HashMap? 将考虑什么参数,以及如何testing散列表有多好? 就像在你说你的哈希映射完成之前需要运行的基准testing用例一样。

NUnit 3.0和Assert.Throws

我正在用NUnit 3.0编写一些unit testing,而不像v2.x, ExpectedException()已经从库中删除了。 基于这个答案,我可以肯定地看到试图特别抓住testing的地方的逻辑,一个人期望他们的系统抛出exception(而不是仅仅说“testing中的任何地方”)。 不过,我倾向于对我的“安排”,“行为”和“断言”步骤非常明确,这使得它成为一个挑战。 我曾经这样做过: [Test, ExpectedException(typeof(FormatException))] public void Should_not_convert_from_prinergy_date_time_sample1() { //Arrange string testDate = "20121123120122"; //Act testDate.FromPrinergyDateTime(); //Assert Assert.Fail("FromPrinergyDateTime should throw an exception parsing invalid input."); } 现在我需要做一些事情: [Test] public void Should_not_convert_from_prinergy_date_time_sample2() { //Arrange string testDate = "20121123120122"; //Act/Assert Assert.Throws<FormatException>(() => testDate.FromPrinergyDateTime()); } 这不是可怕的,但在我看来,这个法案和声明混淆了。 (很明显,对于这个简单的testing,这并不难,但在更大的testing中可能会更具挑战性)。 我有一个同事build议我完全摆脱Assert.Throws ,只是做一些事情: [Test] public void Should_not_convert_from_prinergy_date_time_sample3() { […]

在运行Pythonunit testing套件时,您可以传递多less数字?

Pythonunit testing框架有一个冗长的概念,我似乎无法在任何地方find定义。 例如,我正在运行像这样的testing用例( 如在文档中 ): suite = unittest.TestLoader().loadTestsFromTestCase(MyAwesomeTest) unittest.TextTestRunner(verbosity=2).run(suite) 我所见过的唯一的一个数字是2.这个神奇的数字是什么,这是什么意思,还有什么我可以通过?

当使用$ mock-> expect($ this-> at(…))时,PHPUnit“Mocked方法不存在”

我遇到了PHPUnit模拟对象的一个​​奇怪的问题。 我有一个方法应该被调用两次,所以我使用“在”匹配。 这是第一次调用方法,但由于某种原因,第二次调用方法,我得到了“模拟方法不存在”。 我之前使用过“at”匹配器,从来没有遇到过这种情况。 我的代码看起来像这样: class MyTest extends PHPUnit_Framework_TestCase { … public function testThis() { $mock = $this->getMock('MyClass', array('exists', 'another_method', '…')); $mock->expects($this->at(0)) ->method('exists') ->with($this->equalTo('foo')) ->will($this->returnValue(true)); $mock->expects($this->at(1)) ->method('exists') ->with($this->equalTo('bar')) ->will($this->returnValue(false)); } … } 当我运行testing时,我得到: Expectation failed for method name is equal to <string:exists> when invoked at sequence index 1. Mocked method does not exist. 如果我删除第二个匹配器,我没有得到错误。 有没有人遇到过这个? […]

函数隐私和unit testingHaskell

你如何处理Haskell中的函数可见性和unit testing? 如果您导出模块中的每个函数,以便unit testing可以访问它们,则可能导致其他人调用不应该在公共API中的函数。 我想过使用{-# LANGUAGE CPP #-} ,然后使用#ifdef包围出口: {-# LANGUAGE CPP #-} module SomeModule #ifndef TESTING ( export1 , export2 ) #endif where 有没有更好的办法?

在成熟的项目中引入testing驱动开发(TDD)是否可行?

假设我们已经意识到TDD的价值太晚了。 项目已经成熟,很多客户开始使用它。 说使用自动化testing主要是function/系统testing,并且有很多自动GUItesting。 假设我们有新的function请求和新的错误报告(!)。 所以很多发展仍然在继续。 请注意,已经有很多没有或很lessunit testing的业务对象。 他们之间太多的协作/关系,只能通过更高层次的function/系统testing来进行testing。 没有集成testing本身。 大型数据库有大量的表格,视图等等。只是为了实例化一个单一的业务对象,已经有很多的数据库往返。 我们现在怎么介绍TDD呢? 嘲笑似乎是要走的路。 但是我们在这里需要做的嘲弄的数量似乎太多了。 听起来像精心devise的基础设施需要为现有的工具(BO,数据库等)工作的嘲笑系统开发。 这是否意味着只有从头开始时,TDD才是一种合适的方法? 我有兴趣了解在已经成熟的产品中引入TDD的可行策略。

自动生成Java的unit testing?

任何自动生成Java代码unit testing的工具? 更新:主要用途是快速生成要重构的遗留代码的unit testing。 自动生成后,不需要自动保持testing与代码同步。 这里提出的问题几乎是相同的,但答案是.NET而不是Java( Pex是被接受的答案): 自动生成.NET和Java的unit testing用例