Tag: unit testing

如何用mockito模拟一个构建器

我有一个建设者: class Builder{ private String name; private String address; public Builder setName(String name){ this.name = name; return this; } public Builder setAddress(String address){ this.address = address; return this; } } 在mockito中模拟构建器会使每个方法都为null。 因此,有一种简单的方法可以让构建器在每次函数调用时返回自己,而不使用when().thenReturn每个函数本身。

我怎样才能改进我的junit测试

对我的junit测试看起来像一个长篇故事: 我创建了4个用户 我删除了1个用户 我尝试使用已删除的用户登录并确保它失败 我使用剩下的3个用户之一登录并validation我可以登录 我从一个用户向另一个用户发送消息,并validation它是否显示在发件人的发件箱中以及接收者的收件箱中。 我删除了这条消息 … … 优点 :测试非常有效(非常擅长检测错误)并且非常稳定,因为它们只使用API​​,如果我重构代码,那么测试也会被重构。 由于我不使用“脏技巧”,例如在给定状态下保存和重新加载数据库,我的测试无视模式更改和实现更改。 缺点 :测试变得难以维护,测试中的任何更改都会影响其他测试。 测试运行8-9分钟,这对于持续集成非常有用,但对开发人员来说有点令人沮丧。 测试不能孤立运行,你可以做的最好的事情是在你感兴趣的测试运行后停止 – 但是你必须运行之前的所有测试。 你会如何改进我的测试?

JUnit 4:在测试运行之前在测试套件中设置东西(比如测试的@BeforeClass方法,仅​​用于测试套件)

我想在(restful)webservice上做一些function测试。 testsuite包含一堆测试用例,每个测试用例在webservice上执行几个HTTP请求。 当然,Web服务必须运行或测试失败。 🙂 启动Web服务需要几分钟(它会解决一些繁重的数据),因此我希望尽可能不频繁地启动它(至少所有只有来自服务的GET资源可以共享一个的测试用例)。 那么在测试运行之前,有没有办法在测试套件中设置炸弹,就像测试用例的@BeforeClass方法一样?

如何使用JUnit,EasyMock或PowerMock模拟静态最终变量

我想模拟静态最终变量以及使用JUnit,EasyMock或PowerMock模拟i18n类。 我怎么做?

我可以使用mockito来匹配具有自动更新时间戳的对象吗?

在进行模拟调用之前自动更新时间戳的最佳方法是什么? 这是我试图测试的一些虚拟代码: public class ThingWithATimestamp { public Long timestamp; public String name; public ThingWithATimestamp(String name) { this.name = name; } } public class TheClassThatDoesStuff { private ThingConnector connector; public TheClassThatDoesStuff(ThingConnector connector) { this.connector = connector; } public void updateTheThing(MyThingWithATimestamp thing) { thing.timestamp = currentTimestamp(); connector.update(thing); } } 这是我想要测试的: public class TheClassThatDoesStuffTests { @Test public void […]

unit testing中的静态类/方法/属性,是否停止

更新 应该在unit testing开发环境中使用静态类/方法/属性,因为如果不引入再次无法测试的包装器就无法测试它吗? 另一种情况是,当在unit testing目标内使用静态成员时,静态成员不能被模拟。 因此,在测试unit testing目标时,您必须测试静态成员。 您希望在静态成员执行计算时将其隔离。

Mockito可以根据方法调用时的值validation参数吗?

我有一个Foo类,它是SUT和一个Bar类,它是它的合作者。 Foo使用“ expectedList ”作为参数调用Bar上的run(List values) 。 然后, Foo将向此List添加一些元素,以使其状态与调用run()时的状态不同。 这是我的测试用例。 @Test public void testFoo() { Bar collaborator = spy(new Bar()); Foo sut = new Foo(collaborator); verify(collaborator).run(expectedList); } 请注意,协作者实际上是间谍对象而不是模拟对象。 此测试用例将失败,因为即使使用等于expectedList的参数调用run() ,它也会被修改,因为它的当前值不再等于expectedList 。 然而,这是它应该工作的方式,所以我想知道是否有办法让Mockito在调用方法时存储参数的快照,并根据这些值而不是最近的值来validation它们。

是否有Java自定义集合实现的测试套件?

出于好奇,我为一个特殊情况编写了一个自己的Set简单实现(其中所有可能的条目的集合是固定的,但它不是enum )。 它实际上非常简单,但显然,我的实现在没有大量测试的情况下无法使用(甚至可能在那时,但这是另一个主题;它主要是一个练习)。 那么我可以使用任何测试套件进行unit testing吗?

有没有办法让ClassLoader加载哪些类?

我正在尝试为旧框架实现一些unit testing。 我试图模拟出数据库层。 不幸的是,我们的框架有点陈旧,并没有完全采用最佳实践,因此没有明确的关注点分离。 我有点担心尝试模拟数据库层可能会使JVM加载大量甚至无法使用的类。 我不太了解类加载器,所以这可能不是问题。 有没有办法在特定的ClassLoader加载的所有类中达到峰值,以certificate引擎盖下发生了什么?

Eclipse类路径条目仅用于测试

在Maven中,您可以拥有编译时依赖项和测试依赖项。 这是我喜欢的function,M2Eclipse插件也可以在Eclipse中使用,这很棒。 因此,如果我将jmock.jar作为测试依赖项添加到我的项目中,它将显示在JUnit测试的类路径上,但在我调试应用程序本身时不会出现。 这正是我现在想要实现的目标,但没有M2Eclipse或Maven。 有没有办法在纯Eclipse中执行此操作? (可能没有安装任何插件。)