Tag: junit

何时使用Mockito.verify()?

我为三个目的编写jUnittesting用例: 为了确保我的代码在全部(或大部分)input组合/值下满足所有必需的function。 为了确保我可以更改实现,并依靠JUnittesting用例告诉我,我所有的function仍然满足。 作为我的代码处理的所有用例的文档,并作为重构的规范 – 如果代码需要重写。 (重构代码,如果我的jUnittesting失败 – 你可能错过了一些用例)。 我不明白为什么或什么时候应该使用Mockito.verify() 。 当我看到verify()被调用时,它告诉我,我的jUnit正在意识到实现。 (因此改变我的实现将打破我的jUnits,即使我的function不受影响)。 我在找: 什么应该适当使用Mockito.verify()的指导方针? jUnits是否意识到或紧密结合被testing的类的实现从根本上说是正确的?

如何validation一个方法被调用两次mockito verify()

我想通过mockitovalidation来validation一个方法是否被调用两次或多次。 我使用validation,它像这样抱怨: org.mockito.exceptions.verification.TooManyActualInvocations: Wanted 1 time: But was 2 times. Undesired invocation:

Java:是assertEquals(String,String)可靠吗?

我知道==比较两个Strings时有一些问题。 看来, String.equals()是一个更好的方法。 那么,我正在做JUnittesting,我的倾向是使用assertEquals(str1, str2) 。 这是一个可靠的方式来断言两个string包含相同的内容? 我会使用assertTrue(str1.equals(str2)) ,但是你没有看到失败的预期和实际值的好处。 在相关的说明,没有人有一个页面或线程的链接,清楚地解释str1 == str2的问题?

如何用mockito捕获特定types的列表

有没有办法使用mockitos ArgumentCaptore捕获特定types的列表。 这不起作用: ArgumentCaptor<ArrayList<SomeType>> argument = ArgumentCaptor.forClass(ArrayList.class);

Mockito:试图窥探方法是调用原始方法

我正在使用Mockito 1.9.0。 我想在JUnittesting中模拟一个类的单一方法的行为,所以我有 final MyClass myClassSpy = Mockito.spy(myInstance); Mockito.when(myClassSpy.method1()).thenReturn(myResults); 问题是,在第二行, myClassSpy.method1()实际上被调用,导致一个exception。 我使用mock的唯一原因是,以后只要myClassSpy.method1() ,真正的方法将不会被调用,并且myResults对象将被返回。 MyClass是一个接口, myInstance是一个实现,如果这很重要。 我需要做些什么来纠正这种间谍行为?

2个JUnit Assert类之间的差异

JUnit框架包含2个Assert类(很明显,在不同的包中),每个方法看起来都非常相似。 有人可以解释为什么这是? 我所指的类是: junit.framework.Assert和org.junit.Assert 。

为什么JUnit不提供assertNotEquals方法?

有谁知道为什么JUnit 4提供了assertEquals(foo,bar)而不是assertNotEqual(foo,bar)方法吗? 它提供了assertNotSame (对应于assertSame )和assertSame (对应于assertSame ),所以似乎很奇怪的是,他们并不打扰包括assertNotEqual 。 顺便说一句,我知道JUnit插件提供了我正在寻找的方法。 我只是出于好奇而问。

时间依赖的unit testing

我需要testing一个函数,其结果取决于当前时间(使用Joda时间的isBeforeNow() )。 public boolean isAvailable() { return (this.someDate.isBeforeNow()); } 是否有可能使用Mockito来存储/模拟系统时间,以便可靠地testing该函数?

如何为Junitunit testing设置JVM参数?

我有一些需要大量堆空间运行的Junitunit testing – 例如1G。 (他们testing的webstart应用程序的内存密集型function只能运行足够的堆空间,并将在Win 7 64位机器上运行,因此重新devisetesting并不是一个实际的build议。) 我正在开发Intellij IDEA,所以我知道我可以为testing类设置JVM参数(例如-Xmx1024M)。 然而,这只是运行整个testing类 – 如果我想运行一个单独的testing,我必须重新创build该testing方法的运行configuration。 另外,这些都是IDE和盒子特定的 – 所以如果我切换盒子(我在多台机器上开发)或者我的一个同事试图运行testing,那些设置不会被传输。 (另外,我的同事也使用Eclipse和NetBeans等其他IDE。)FWIW,我们使用mercurial进行源代码控制。 对于构build周期,我们使用Maven,所以我知道如何为它指定JVM参数。 所以: – 我正在寻找一种方法来指定适用于整个testing类和单个testing方法的JVM参数; 并且 – 我想在任何机器上的IDE上分享这些规范(从存储库中获取代码)。

在junittesting类中重用spring应用程序上下文

我们有一堆JUnittesting用例(集成testing),它们在逻辑上被分组到不同的testing类中。 我们能够为每个testing类加载一次Spring应用程序上下文,并将其重用于JUnittesting类中的所有testing用例,如http://static.springsource.org/spring/docs/current/spring-framework-reference /html/testing.html 然而,我们只是想知道是否有一种方法只为一堆JUnittesting类加载Spring应用程序上下文。 FWIW,我们使用Spring 3.0.5,JUnit 4.5并使用Maven来构build项目。