Tag: unit testing

如何在Java应用程序中testing私有构造函数?

如果一个类包含一堆静态方法,为了确保没有人错误地初始化这个类的一个实例,我做了一个私有的构造函数: private Utils() { } 现在..鉴于构造函数不能被看到,怎么能testing呢? 这可以testing覆盖呢?

写“unit testing”的代码?

你使用什么样的做法来使你的代码更友好的unit testing?

如何使用命令行MSTest.exe在我的解决scheme中运行所有testing?

根据这里的 MSDN和这里讨论的,我们可以使用MSTest.exe运行testing – 这比在IDE中运行更加快速(尤其是如果您正在处理像我这样的大型解决scheme,速度尤其慢)。 我的问题是如何使用MSTest.exe来运行我的解决scheme中的 所有testing? 该命令只有/test选项来过滤/container选项中指定的一个程序集中的testing。 我只能想到,我可以在我的解决scheme中使用所有的Ntesting程序集(!?)来调用这个命令N次。而且,运行后的结果是每个程序集的基础知识,因此不容易得到哪些testing失败/通过。 如果你知道更好的方法,请分享! 谢谢!

您在App Engine上使用了哪些方法进行轻量级Pythonunit testing?

我即将开始一些基于Python的大型App Engine项目,我认为在进行unit testing之前,我应该检查Stack Overflow的“人群智慧”。 我想要使​​用一个现有的unit testing框架(基于unittest的自定义运行和扩展),所以像鼻子 , webtest或gaeunit这些“重量级”/“侵入性”的东西似乎并不合适。 在我的世界观中,关键的unit testing是非常轻量级和快速的,在极短的时间内运行,所以我可以不断地运行它们,而不会破坏我的开发节奏(例如,对于不同的项目, 97%左右的20K线项目覆盖率,几十次超快速testing,总体耗时5-7秒,这是一个典型的运行时间,这就是我认为的一个体面的小型快速unit testing套件,testing)。 当然,我还会进行更丰富/更重的testing,一直到用selenium或风车进行集成testing,这不是我所要求的;-) – 我关注这个问题(在我的大部分开发工作中;-)就是小而轻的unit testing,它能轻而易举地覆盖我的代码,而不是更深的代码。 所以我想我所需要的实质上是一组小的,非常轻量级的App Engine子系统模拟 – 数据存储,memcache,请求/响应对象以及对webapp处理程序,用户处理,邮件和c的调用优先顺序。 我还没有find我正在寻找的东西,所以在我看来,我应该依靠mox ,就像我以前经常做的那样,这基本上意味着嘲笑在给定testing中使用的每个子系统,并设置所有的期望&c(每一次都很强,但是很多工作,而且对被testing代码的内部非常敏感,也就是非常“白匣子”),或者滚动我自己的每个子系统的模拟(并且在模拟的子系统上进行断言)作为unit testing的一部分)。 鉴于GAE的Python方面强大的“存根”架构,后者似乎是可行的,但我不敢相信我需要推出我自己的,也就是说,没有人已经写过这么简单的模拟器!)例如,对于数据存储,它看起来像我所需要的或多或less是已经是SDK一部分的“数据存储在文件”存根(stub),另外还有一种方法来标记它是只读和易于使用的访问器,用于断言数据存储的状态; 子系统 – 每个子系统似乎都需要“比SDK中已经存在的多一点”,位于现有“存根”架构的“顶端”。 所以,在深入研究和花费一两天宝贵的开发时间来“单独testing”GAE子系统的模拟来进行unit testing之前,我想我会仔细检查一下SO人群,看看你们是怎么想的。 ..或者,如果已经有一些现有的开放源代码的模拟器集合,我可以简单的重复使用(或者是最小的调整!),而我在search中却没有发现这些东西 – ) 编辑 :澄清,如果我做我自己的,我打算在可行的情况下利用SDK提供的存根(stub) 但是,例如,对于最初从文件读入数据存储区但没有保存在最后的数据存储区,没有存根,因此我需要对现有存储区进行子类化和调整(也不提供特别便利的方法来对其进行断言状态 – 与邮件服务存根相同,等等)。 这就是我所说的“滚动自己的” – 而不是“从头开始改写” – ) 编辑 :“为什么不GAEUnit” – GAEUnit是很好的自己的用例,但运行dev_appserver和在我的浏览器(甚至通过urllib.urlopen)看到的结果是绝对不是我以后 – 我想使用完全自动化的设置,适合在基于扩展unittest的现有的testing运行框架内运行,并且没有HTTP方式(所述框架将“快速”testing定义为除了其他之外没有套接字和最小磁盘I / O – 我们模拟或模拟这些 – 所以通过gaeunit我可以做比“中等”testing没有更好的)+没有方便的方式预先填充每个testing的数据存储(没有OO结构来帮助定制的东西)。

BDD与黄瓜和rspec – 何时是多余的?

Rails /工具特定版本: 你的unit testing有多深? 现在我写下: 黄瓜function(集成testing) – 这些testing针对我们的应用程序返回的HTML / JS,但有时也testing其他的东西,如调用第三方服务。 RSpec控制器testing(functiontesting),最初只有当控制器有任何有意义的逻辑,但现在越来越多。 RSpec模型testing(unit testing) 有时这是完全必要的; 有必要对模型中的行为进行testing,这对最终用户来说并不是完全明显或可见的。 模型复杂时,一定要进行testing。 但其他时候,在我看来,testing是多余的。 例如,如果你testing方法foo如果它只是由bar调用, bar进行testing? 如果bar是一个简单的辅助方法,在Cucumber特性中使用并且容易testing的模型会怎么样? 你是否在rspec和Cucumber中testing了这个方法? 我发现自己正在为此付出努力,因为编写更多的testing需要花费时间,并且维护实际上相同行为的多个“版本”,这使得维护testing套件的时间更加紧凑,从而导致更改更加昂贵。 总之,你是否相信有一段时间只写黄瓜function就够了? 还是应该经常在各个层面上进行testing? 如果您认为存在灰色地带,您需要进行function/unit testing的门槛是多less? 实际上,你现在做什么,为什么(或为什么不),你认为这是足够的? 编辑 : 这是一个什么可能是“testing矫枉过正”的例子。 诚然,我能够很快写出这个,但这完全是假设的。

如何unit testingGoogle Cloud Endpoints

我需要一些帮助为Google Cloud Endpoint设置unit testing。 使用WebTest的所有请求与AppError答案:错误的响应:404未find。 我不确定terminal是否与WebTest兼容。 这是如何生成应用程序: application = endpoints.api_server([TestEndpoint], restricted=False) 然后我用这种方式使用WebTest: client = webtest.TestApp(application) client.post('/_ah/api/test/v1/test', params) curltesting工作正常。 我应该为不同的端点编写testing吗? GAE端点小组的build议是什么?

在ASP.NET WebApi中testing路由configuration

我正在尝试对我的WebApi路由configuration进行一些unit testing。 我想testing路由"/api/super"映射到我的SuperController的Get()方法。 我已经安装了下面的testing,并有几个问题。 public void GetTest() { var url = "~/api/super"; var routeCollection = new HttpRouteCollection(); routeCollection.MapHttpRoute("DefaultApi", "api/{controller}/"); var httpConfig = new HttpConfiguration(routeCollection); var request = new HttpRequestMessage(HttpMethod.Get, url); // exception when url = "/api/super" // can get around w/ setting url = "http://localhost/api/super" var routeData = httpConfig.Routes.GetRouteData(request); request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData; var controllerSelector = […]

Python中的assertAlmostEqual对浮点数集合进行unit testing

Python的unit testing框架中的assertAlmostEqual(x,y)方法testingx和y是否大致相等,假设它们是浮点数。 assertAlmostEqual()的问题是它只能在浮点数上运行。 我正在寻找像assertAlmostEqual()这样的方法,它在浮点,浮点集,浮点字典,浮点元组,浮点元组列表,浮点列表集合等列表上工作。 例如,令x = 0.1234567890 , y = 0.1234567891 。 x和y几乎相等,因为除了最后一个数字外,他们都同意每个数字。 因此, self.assertAlmostEqual(x, y)是True因为assertAlmostEqual()适用于浮点数。 我正在寻找一个更通用的assertAlmostEquals() ,也评估以下调用True : self.assertAlmostEqual_generic([x, x, x], [y, y, y]) 。 self.assertAlmostEqual_generic({1: x, 2: x, 3: x}, {1: y, 2: y, 3: y}) 。 self.assertAlmostEqual_generic([(x,x)], [(y,y)]) 。 有没有这样的方法,还是我自己要实现呢? 澄清: assertAlmostEquals()有一个名为places的可选参数,通过计算舍入到小数位数的差值来比较数字。 默认情况下, places=7 ,因此self.assertAlmostEqual(0.5, 0.4)为False,而self.assertAlmostEqual(0.12345678, 0.12345679)为True。 我推测assertAlmostEqual_generic()应该有相同的function。 如果两个列表中的数字完全相同,则认为它们几乎相等。 正式地, for i […]

在包装函数之前,我可以修补Python装饰器吗?

我有一个装饰器的function,我试图在Python 模拟库的帮助下进行testing。 我想使用mock.patch来replace真正的装饰器,只是调用函数的模拟“旁路”装饰器。 我无法弄清楚的是如何在真正的装饰器封装函数之前应用这个补丁。 我已经尝试了修补程序目标上的一些不同的变体,并重新sorting修补程序和导入语句,但没有成功。 有任何想法吗?

如何并行运行unit testing(MSTest)?

我正在寻找并行运行testing套件的方法。 我知道.testrunconfig设置。 这使您可以复用 CPU的数量。 我想并行运行1000个testing。 这是有道理的,因为我正在testing一个Web服务,所以在testing中花费的时间有90%正在等待服务响应。 任何想法如何把这个closures? testing是为VS写的,但我打开在VS之外运行它们。 稍后编辑 :Visual Studiotesting团队已经在VS 2015 Update 1中添加了这个。请参阅Mark Sowul的答案。