Tag: unit testing

在Django 1.7中运行unit testing时禁用迁移

Django 1.7引入了数据库迁移 。 在Django 1.7中运行unit testing时,它会强制迁移 ,这需要很长时间。 所以我想跳过Django的迁移,并创build最终状态的数据库。 我知道忽略迁移可能是一个不好的做法,因为这部分代码不会被testing。 但事实并非如此:我在CItesting服务器上运行完整的迁移(jenkins)。 我只想跳过速度很重要的本地testing中的迁移。 一些背景: 直到Django 1.6 ,使用South时,我使用了SOUTH_TESTS_MIGRATE设置: 默认情况下,如果以非交互模式运行(包括运行testing时),则South的syncdb命令也将应用迁移 – 每次运行testing时都会运行每次迁移。 如果您希望testing运行程序使用syncdb而不是迁移 – 例如,如果您的迁移时间过长,则只需在settings.py中设置SOUTH_TESTS_MIGRATE = False即可。 但是, syncdb不再存在,现在正在迁移 。 从Django 1.8开始,我将使用–keepdb参数: –keepdb选项可用于在testing运行之间保留testing数据库。 这具有跳过创build和销毁操作的优点,这大大减less了运行testing的时间,尤其是在大型testing套件中。 如果testing数据库不存在,则将在第一次运行时创build,然后保留以备后续运行。 在运行testing套件之前,任何未应用的迁移也将被应用到testing数据库。 所以这个问题仅限于Django 1.7。

的Mockito。 validation方法参数

我一直在search这个,但没有发现任何相关的东西。 我有这样的东西: Object obj = getObject(); Mockeable mock= Mockito.mock(Mockeable.class); Mockito.when(mock.mymethod(obj )).thenReturn(null); Testeable obj = new Testeable(); obj.setMockeable(mock); command.runtestmethod(); 现在,我想validation在runtestmethod()内部调用的mymethod(Object o)是否被Object o调用,而不是其他的。 但是我总是通过testing,无论我把validation,例如,与: Mockito.verify(mock.mymethod(Mockito.eq(obj))); 要么 Mockito.verify(mock.mymethod(Mockito.eq(null))); 要么 Mockito.verify(mock.mymethod(Mockito.eq("something_else"))); 我总是通过testing。 我如何完成validation(如果可能的话)? 谢谢。

F#开发和unit testing?

我刚刚开始使用F#,这是我的第一个function语言。 我一直准C#工作,并且非常喜欢F#如何让我重新思考如何编写代码。 我发现有一点让人迷惑,就是编写代码的过程发生了变化。 我已经在C#中使用了TDD多年,并且非常感谢有unit testing来知道我在哪里。 到目前为止,我用F#编写的过程一直是编写一些函数,使用交互式控制台与他们一起玩,直到我“合理地”确定他们工作,并调整和合并。 这在欧拉项目这样的小规模问题上效果很好,但是我无法想象以这样的方式构build大的东西。 人们如何进行unit testing并为F#程序构buildtesting套件? 是否有相当于TDD? 任何指针或想法赞赏。

unit testing代码与文件系统的依赖关系

我写了一个组件,给定一个ZIP文件,需要: 解压该文件。 在解压缩的文件中find一个特定的dll。 通过reflection加载该dll并调用其上的一个方法。 我想unit testing这个组件。 我很想编写直接处理文件系统的代码: void DoIt() { Zip.Unzip(theZipFile, "C:\\foo\\Unzipped"); System.IO.File myDll = File.Open("C:\\foo\\Unzipped\\SuperSecret.bar"); myDll.InvokeSomeSpecialMethod(); } 但人们经常说:“不要编写依赖文件系统,数据库,networking等的unit testing” 如果我以unit testing友好的方式写这个,我想这应该是这样的: void DoIt(IZipper zipper, IFileSystem fileSystem, IDllRunner runner) { string path = zipper.Unzip(theZipFile); IFakeFile file = fileSystem.Open(path); runner.Run(file); } 好极了! 现在是可testing的; 我可以喂testing双打(嘲笑)的DoIt方法。 但费用是多less? 我现在不得不定义3个新的接口来做这个testing。 我究竟在testing什么? 我正在testing我的DoIt函数是否正确地与它的依赖进行交互。 它不testingzip文件是否正确解压缩等。 它不觉得我正在testingfunction了。 感觉就像我只是在testing课堂互动。 我的问题是 :什么是正确的方式来unit testing依赖于文件系统的东西? 编辑我正在使用.NET,但是这个概念也可以应用Java或本地代码。

使用茉莉来窥探一个没有对象的函数

我是茉莉花新手,刚刚开始使用它。 我有一个图书馆的js文件与许多function,这是没有任何对象(即全球)的关联。 我如何去探究这些function? 我尝试使用窗口/文档作为对象,但即使函数被调用间谍也不工作。 我也尝试把它包装在一个假物体中,如下所示: var fakeElement = {}; fakeElement.fakeMethod = myFunctionName; spyOn(fakeElement, "fakeMethod"); 和testing expect(fakeElement.fakeMethod).toHaveBeenCalled(); 这不工作,因为间谍没有工作

如何让初级程序员编写testing?

我们有一个初级程序员,根本不写足够的testing。 我每隔两个小时就要唠叨一句,“你有写testing吗?” 我们已经尝试过: 表明devise变得更简单 显示它可以防止缺陷 把自己的东西说成只有糟糕的程序员才会这样做 这个周末,2名团队成员不得不开始工作,因为他的代码有一个NULL引用,他没有testing它 我的工作需要最高质量的稳定代码,通常每个人都能得到它,而且不需要通过testing。 我们知道我们可以让他编写testing,但我们都知道有用的testing是在你写入testing时写的。 你知道更多的动机吗?

如何使用ArgumentCaptor进行存根?

在Mockito 文档和javadocs中说 build议使用ArgumentCaptor进行validation,但不要使用stubbing。 但是我不明白ArgumentCaptor如何用于存根。 有人能解释一下上面的陈述,并说明如何使用ArgumentCaptor进行存根或提供一个链接来显示如何完成?

Mockito与JMockit之间的比较 – 为什么Mockito比JMockit投票更好?

我正在调查哪个模拟框架用于我的项目,并已缩小到JMockit和Mockito 。 我注意到Mockito在Stackoverflow上被评选为“ 最好的Java模拟框架 ”。 在比较JMockit的“ 模拟工具比较matrix ”中的特性时, JMockit显示出多种不同的特性。 有没有人有任何具体的信息(而不是意见) Mockito可以做什么不能用JMockit实现,反之亦然?

Junit:分解集成testing和unit testing

我已经inheritance了一个Junittesting的负载,但这些testing(除了大多数不工作)是实际的unit testing和集成testing(需要外部系统,分贝等)的混合物。 所以我试图想办法将它们分离出来,这样我就可以很快地运行unit testing,然后再进行集成testing。 选项是.. 将它们拆分成不同的目录。 移至Junit4(从v3开始)并注释这些类以将它们分开。 使用文件命名约定来告诉一个类是什么,即AdapterATest和AdapterAIntergrationTest。 3有问题,Eclipse可以select“在选定的项目/包或文件夹中运行所有testing”。 所以这将使运行集成testing变得非常困难。 2:运行开发人员可能开始在unit testing课程中开始编写集成testing的风险,而且会变得混乱。 1:似乎是最好的解决办法,但我的直觉说,那里一定有更好的解决办法。 所以这是我的问题,你如何分解集成testing和适当的unit testing?

我怎样才能让PHPUnit MockObjects根据参数返回不同的值?

我有一个PHPUnit模拟对象返回'return value'不pipe它的参数: // From inside a test… $mock = $this->getMock('myObject', 'methodToMock'); $mock->expects($this->any)) ->method('methodToMock') ->will($this->returnValue('return value')); 我希望能够做的是返回一个不同的值基于传递给模拟方法的参数。 我试过类似的东西: $mock = $this->getMock('myObject', 'methodToMock'); // methodToMock('one') $mock->expects($this->any)) ->method('methodToMock') ->with($this->equalTo('one')) ->will($this->returnValue('method called with argument "one"')); // methodToMock('two') $mock->expects($this->any)) ->method('methodToMock') ->with($this->equalTo('two')) ->will($this->returnValue('method called with argument "two"')); 但是这会导致PHPUnit投诉,如果模拟不是用参数'two'调用'two' ,所以我假设methodToMock('two')的定义覆盖了第一个的定义。 所以我的问题是:有什么办法让一个PHPUnit模拟对象返回基于它的参数不同的值? 如果是的话,怎么样?