Tag: unit testing

控制Visual Studio中unit testing的执行顺序

好的,我已经完成了这方面的好消息。 我有一系列的unit testing,调用一个静态类,一旦初始化,设置属性不能(或我不希望)改变。 我的问题是我无法执行testing运行的设置顺序。 如果可以的话,我可以运行它们,静态属性将以可靠的方式设置,我可以断言它们,但不幸的是Microsoft.VisualStudio.TestTools.UnitTesting框架只是以一种看似随机的顺序运行它们。 所以,我发现这个http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.priorityattribute.aspx在备注部分说:“该属性不被testing系统使用。提供给用户用于定制目的。“ 咦? 那有什么好处呢? 他们是否期望我写自己的testing封装来利用这个神话般的属性(如果我想要达到这个水平的努力,我可以轻松写出自己的属性…) 所以,足够的咆哮; 底线,有没有一种方法来控制我的unit testing运行的顺序? [TestMethod] [Priority(0)] 等似乎不工作,这是有道理的,因为微软说它不会。 另外,请不要评论“违反隔离”。 TestClass隔离我正在testing的内容,而不是单独的TestMethods。 无论如何,每个testing都可以独立运行,它们不能随机排列,因为没有办法拆除静态类。 哦,我也知道“有序testing”。

testing:如何把注意力放在行为上而不是在不失速的情况下实现?

看来,有两种完全不同的testing方法,我想引用他们两个。 问题是,这些意见是在5年前(2007年)提出的,我对此感兴趣,自那以后发生了什么变化,我该走哪条路。 布兰登老板 : 理论是testing应该是不可知的实现。 这导致testing不太脆,实际testing结果(或行为)。 对于RSpec,我觉得完全模拟你的模型来testing你的控制器最终会迫使你过多地考虑你的控制器的实现。 这本身并不是太糟糕,但问题在于,它太多地进入控制器,以决定如何使用模型。 为什么我的控制器会调用Thing.new? 如果我的控制器决定采取Thing.create怎么办! 和救援路线? 如果我的模型有一个特殊的初始化方法,如Thing.build_with_foo? 我的行为规范不应该失败,如果我改变实施。 当你有嵌套的资源并且为每个控制器创build多个模型时,这个问题变得更糟。 我的一些设置方法最终是15行或更长的行,非常脆弱。 RSpec的目的是将你的控制器逻辑从你的模型中完全隔离出来,这在理论上听起来不错,但是几乎和Rails这样的集成堆栈运行在一起。 特别是如果你练习瘦身控制器/胖模型的规则,控制器中的逻辑数量变得非常小,并且设置变得巨大。 那么什么是BDD想要做的? 退一步说,我真正想testing的行为不是我的控制器调用Thing.new,而是给定参数X,它创build一个新的东西并redirect到它。 大卫Chelimsky: 这全是关于权衡。 ARselectinheritance而不是授权的事实使我们处于testing的束缚之中 – 我们必须将其与数据库耦合起来,否则我们必须更加贴近实施。 我们接受这种deviseselect,因为我们从performance力和干爽中获得好处。 为了应对困境,我select了更快速的testing,代价是稍微更脆弱。 你select较脆弱的testing,代价是稍微慢一些。 这是一个折中的方法。 在实践中,我每天运行数百次,甚至数千次(我使用自动testing并采取非常细化的步骤),并且改变我是否几乎从不使用“新build”或“创build”。 同样由于细化的步骤,出现的新模型起初非常不稳定。 valid_thing_attrs方法最大限度地减less了这一点的痛苦,但它仍然意味着每个新的必需字段意味着我必须更改valid_thing_attrs。 但如果你的方法在实践中为你工作,那么它的好! 事实上,我强烈build议你发布一个插件,用你喜欢它们的方式生成例子。 我相信很多人会从中受益。 瑞安·贝茨 : 出于好奇,你在testing/规格中多久使用mock? 也许我做错了什么,但我觉得这是严重的限制。 从一个月前转换到rSpec,我一直在做他们推荐的文档,控制器和视图层根本没有碰到数据库,模型被完全嘲弄了。 这给你一个很好的速度提升,使一些事情更容易,但我发现这样做的弊端远远超过专业人士。 自从使用mock之后,我的规格变成了维护噩梦。 规范是为了testing行为,而不是实现。 我不在乎一个方法是否被调用,我只是想确保输出结果是正确的。 因为嘲讽使得规范对实现有挑剔,所以不必经常返回并“修复”规范就可以做简单的重构(不会改变行为)。 我非常想知道一个规范/testing应该包括什么。 只有当应用程序中断时,testing才会中断。 这是为什么我很难testing视图层的一个原因,因为我觉得它太僵硬了。 在视图中更改小的东西时,通常会导致testing中断,而不会中断应用程序。 我发现与嘲笑相同的问题。 最重要的是,我今天才意识到,嘲笑/扼杀类方法(有时)在规范之间。 规格应该是自包含的,不受其他规格的影响。 这打破了这个规则,并导致了棘手的错误。 我从这些中学到了什么? 小心你使用嘲笑。 存根并不坏,但仍然有一些相同的问题。 […]

R语言中unit testing支持的当前状态如何?

R是一种统计编程语言。 R的一部分是使用Packages,它们都是用R语言编写的。 编程最佳实践包括使用unit testing来testing这些包中的函数在写入和使用时的function。 我知道R中有几个unit testing的包, 运行 Svunit Testthat 我有兴趣知道; 还有其他的包吗? 鉴于各国人民的经验,这些软件包在不同的方面performance出色吗 R的unit testing目前的状态是什么?

testing驱动的开发 – 如何在没有任何实现代码存在的情况下编写testing

我正在学习TDD,但由于不直截了当,所以很难接受。 我无法回答的问题是“ 如何在任何实现代码存在之前编写testing? ”。 如果我们的目标类/目标方法/目标参数types/目标返回types不存在, 在testing中编写代码时我们所指的是什么。 我们如何开始写testing? 如果我们所能写的只是testing方法的名称,那么testing失败了怎么办? 每个人都告诉为什么,但不是如何 我已经尽了最大的努力去寻找资源,详细说明在生产代码之前编写testing的问题,但是假设我错过了很好的资源,其中大多数都充满了陈词滥调,解释为什么TTD比重点关注采用它的实践更重要。 一个示例用例。 假设我们正在为大学开发一个软件,我们的用例是课程注册。 为了简单起见,让我们限制这个讨论 情景:“学生每学期最多可以选修3门课程” testing服务层和dao层。 伪代码 ENROLL(studentId, courseId) //check if student enrolled in less than 3 courses in the same semester as given courseId belongs in. //if yes, enroll him/her. //if not, return an error. 上面的实际实现可能涉及到几个涉及服务,道教等的类。 请你能解释一下如何进行testing驱动 – 逐步开发它? 如果你使用TDD来实现这个function,那么你怎么一步一步地做到这一点。 我希望这可以在未来帮助像我这样的斗争。

如何用MSTest进行RowTest?

我知道MSTest不支持RowTest和类似的testing。 MSTests用户做什么? 如果没有RowTest支持,生活怎么样? 我已经看到DataDriventestingfunction,但听起来像太多的开销,有没有第三方补丁或工具,让我在MSTest做RowTest类似的testing?

如何testing或模拟“如果__name__ =='__main__'”的内容

假设我有一个与以下模块: def main(): pass if __name__ == "__main__": main() 我想写一个下半部的unit testing(我想达到100%的覆盖率)。 我发现执行import / __name__机制的runpy builtin模块,但是我不知道如何模拟或者检查main()函数是否被调用。 这是我迄今为止所尝试的: import runpy import mock @mock.patch('foobar.main') def test_main(self, main): runpy.run_module('foobar', run_name='__main__') main.assert_called_once_with()

* .vsmdi的目的是什么? 我需要源代码控制吗?

什么是.vsmdi文件的纯净? 我需要检查源代码pipe理系统吗?

对使用数据库的代码进行unit testing

我很想知道人们在开发运行数据库的自动unit testing时采取了哪些方法 在testing套件运行之前,您是否安装了QA数据库(已知的起点)? 要么 数据库调用发生时,是否build立数据库存根? 编辑:相关的问题,但不是重复的,虽然对手头的事情相当重要: 如何unit testing持久性?

最新的C ++unit testing?

什么是最现代的C ++语言unit testing方法? 具有更大内省能力的语言(比如Python)的类有unit testing框架,这些框架在某种程度上更自然地使用。 unit testing可以更容易地定义。 相比之下,传统的CppUnit (基于JUnit )似乎采取了非常保守的方法。 有没有更新,更好的使用C ++(甚至C ++ 11)的特定function使生活更轻松? 我一直在使用CppUnit框架一段时间,以简单的方式对Windows本机C ++(Visual Studio 2005和2010)的部分项目。 我们之前没有selecttesting驱动开发方法,因为已经有很多遗留代码,我们发现为它添加testing是相当困难的。 我们不得不重构应用程序,但是即使在这种情况下,添加所有漂亮的testing也是非常耗时的。 最近,我们已经切换到Visual Studio 2013(因为C ++ 11标准实现),我们将开始一个新的,相当长期的项目。 有了以前好的(小)unit testing经验,我想尝试一下testing驱动开发的方法。 由于该项目不是一个小的(预期大小与大约相同,即大约200 k行代码),我宁愿更容易(但不是更低的能力)的框架。 新项目有可能导致跨平台的实施(Windows和Linux)。 在Visual Studio 2013中有一个unit testing支持,但我没有经验,它将如何适应跨平台。 到目前为止,我已经find了C ++的unit testing框架列表 。 但是,我们不能看出它们在原理上有什么不同。 我目前有三名候选人(保守select): 提振 – 可能的候选人; C ++标准的testing平台; 因此有可能被广泛接受; 可能是最大的用户群。 它似乎比CppUnit更先进。 CppUnit – 我知道,但是编写所有代码并不是一件愉快的事情。 Visual Studio 2013内置 – […]

unit testing – video或播客

我正在寻找关于如何进行unit testing的播客或video。 理想情况下,他们应该涵盖基础知识和更高级的主题。