版主注意: 这里已经有39个答案了(部分已经被删除) 在发布答案之前,请考虑是否可以在讨论中添加有意义的内容。 你很可能只是重复别人已经说过的话。 我偶尔会发现自己需要在公开课上做一些私人的方法,只是为了写一些unit testing。 通常这是因为该方法包含在类中的其他方法之间共享的逻辑,并且它自己testing逻辑更加整洁,或者另一个原因可能是我想要testing同步线程中使用的逻辑,而不必担心线程问题。 其他人发现自己这样做,因为我不喜欢这样做? 我个人认为奖金大于公开方法的问题,而这些方法并不真正提供课外的任何服务。 UPDATE 感谢大家的回答,似乎激起了人们的兴趣。 我认为普遍的共识是testing应该通过公共API来进行,因为这是一个课程将被使用的唯一途径,我也同意这一点。 我上面提到的上述情况在哪里我会这样做是罕见的情况下,我认为这样做的好处是值得的。 然而,我可以看到每个人都指出,它永远不会真的发生。 考虑到这一点,我认为改变你的代码来适应testing是一个坏主意 – 毕竟,我认为testing是一种支持工具,如果你愿意,改变一个系统来“支持一个支持工具”是公然的不好的做法。
我使用了很多由后端数据库驱动的Web应用程序。 通常,有一个独立于业务和表示逻辑的ORM层。 这使得对业务逻辑进行unit testing相当简单; 事情可以在离散模块中实现,并且testing所需的任何数据都可以通过对象模仿来伪造。 但是testingORM和数据库本身一直充满着问题和妥协。 多年来,我尝试了一些策略,其中没有一个能完全令我满意。 用已知数据加载testing数据库。 针对ORM运行testing,并确认正确的数据返回。 这里的缺点是您的testing数据库必须跟上应用程序数据库中的任何模式更改,并且可能会不同步。 它也依赖于人造的数据,并且可能不会暴露由于愚蠢的用户input而发生的错误。 最后,如果testing数据库很小,则不会像缺less索引那样显示效率低下。 (好吧,最后一个unit testing应该不是什么用处,但是并没有受到影响。) 加载生产数据库的副本并进行testing。 这里的问题是,你可能不知道什么是在生产数据库在任何时候; 如果数据随时间变化,您的testing可能需要重写。 有人指出,这两种策略都依赖于具体的数据,unit testing只能testingfunction。 为此,我已经看到了build议: 使用模拟数据库服务器,并检查ORM是否正在发送正确的查询来响应给定的方法调用。 你用什么策略来testing数据库驱动的应用程序? 最适合你的是什么?
我是新的unit testing,我试图找出是否应该开始使用更多的“内部”访问修饰符。 我知道,如果我们使用'internal'并设置程序集variables'InternalsVisibleTo',我们可以testing我们不想从testing项目中公开声明的函数。 这使我认为我应该总是使用“内部”,因为至less每个项目(应该?)都有自己的testing项目。 你们能告诉我为什么我不应该这样做吗? 我应该什么时候使用“私人”?
到目前为止,我一直在使用内置的unittest模块(pyUnit)来进行Python代码的unit testing。 但是,对于简单的情况,这似乎是矫枉过正。 作为xUnit的一个衍生物,对于Python的dynamic特性来说,看起来有点沉重,在这种情况下,我希望减less写入以达到相同的效果。 另一方面,它是内置的,它使你以有组织的方式编写你的testing,而且是按时间testing的。 我在网上看到的主要select是: py.test 鼻子 你喜欢哪个框架?为什么? 更新10.12.2011:最近增加了testing自动发现和unit testing(Python 2.7和3.2)中的许多新function,恕我直言,使用外部库的意义不大。 关于doctest:我不认为它是一个unit testing框架本身。 我绝对不会使用它来编写大型应用程序的大套testing。 doctest更适合确保您在文档工作中提供的示例。 它有这个需求的地方,但它不是unit testing,py.test和其他框架的竞争对手。
unit testingObjective-C代码有什么框架? 我想要一个与Xcode很好地集成的框架。
我知道你可以运行所有的testing在一个特定的类使用: mvn test -Dtest=classname 但是我想运行一个单独的方法,-Dtest = classname.methodname似乎不工作。
如何编写一个unittest,只有当一个函数没有抛出预期的exception时才会失败?
我用Python完成了我的第一个正确的项目,现在我的任务是为它编写testing。 由于这是我第一次做项目,这是我第一次为它写testing。 问题是,我该如何开始? 我完全不知道。 任何人都可以指向我一些文档/教程/链接/书籍,我可以用它来开始写testing(我猜尤其是unit testing) 任何build议都会受到欢迎。
如果你要为unit testing规定一个最小百分比的代码覆盖率,甚至可能作为对存储库提交的要求,那将是什么? 请解释你是如何得到你的答案的(因为如果你所做的只是select一个数字,那么我自己就可以完成这一切;)
如何用void返回types来模拟方法? 我实现了观察者模式,但是我不能用Mockito来嘲笑它,因为我不知道如何。 我试图在互联网上find一个例子,但没有成功。 我的class长看起来像 public class World { List<Listener> listeners; void addListener(Listener item) { listeners.add(item); } void doAction(Action goal,Object obj) { setState("i received"); goal.doAction(obj); setState("i finished"); } private string state; //setter getter state } public class WorldTest implements Listener { @Test public void word{ World w= mock(World.class); w.addListener(this); … … } } interface Listener { […]