标签: junit

如何告诉Mockito模拟对象在下次调用时返回不同的东西?

所以,我正在创建一个模拟对象作为类级别的静态变量,如此...在一个测试中,我想Foo.someMethod()返回一个特定的值,而在另一个测试中,我希望它返回一个不同的值.我遇到的问题是,似乎我需要重建模拟才能使其正常工作.我想避免重建模拟,并在每次测试中使用相同的对象.

class TestClass {

    private static Foo mockFoo;

    @BeforeClass
    public static void setUp() {
        mockFoo = mock(Foo.class);
    }

    @Test
    public void test1() {
        when(mockFoo.someMethod()).thenReturn(0);

        TestObject testObj = new TestObject(mockFoo);

        testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value

    }

    @Test
    public void test2() {
        when(mockFoo.someMethod()).thenReturn(1);

        TestObject testObj = new TestObject(mockFoo);

        testObj.bar(); // calls mockFoo.someMethod(), STILL receiving 0 as the value, instead of expected 1.

    }

}
Run Code Online (Sandbox Code Playgroud)

在第二个测试中,当调用testObj.bar()时,我仍然接收0作为值...解决此问题的最佳方法是什么?请注意,我知道我可以Foo在每个测试中使用不同的模拟,但是,我必须将多个请求链接起来mockFoo,这意味着我必须在每个测试中进行链接.

java junit unit-testing mocking mockito

183
推荐指数
5
解决办法
17万
查看次数

对于double值,assertEquals的epsilon参数的含义

我有一个关于junit assertEquals来测试双值的问题.阅读API文档,我可以看到:

@Deprecated
public static void assertEquals(double expected, double actual)
Run Code Online (Sandbox Code Playgroud)

已过时.使用assertEquals(双重预期,双重实际,双重epsilon)代替

这个epsilon值意味着什么?(Epsilon是希腊字母表中的一封信,对吧?).

有人可以向我解释如何使用它吗?

java junit unit-testing

181
推荐指数
4
解决办法
14万
查看次数

如何在记录器中对消息执行JUnit断言

我有一些测试代码,它调用Java记录器来报告其状态.在JUnit测试代码中,我想验证在此记录器中是否输入了正确的日志.以下内容:

methodUnderTest(bool x){
    if(x)
        logger.info("x happened")
}

@Test tester(){
    // perhaps setup a logger first.
    methodUnderTest(true);
    assertXXXXXX(loggedLevel(),Level.INFO);
}
Run Code Online (Sandbox Code Playgroud)

我想这可以通过特殊改编的记录器(或处理程序或格式化程序)来完成,但我更愿意重用已经存在的解决方案.(而且,说实话,我不清楚如何从记录器获取logRecord,但假设这是可能的.)

java logging junit assert

177
推荐指数
14
解决办法
15万
查看次数

断言对象是特定类型

在JUnit中是否有可能断言一个对象是一个类的实例?由于各种原因,我在测试中有一个对象,我想检查其类型.它是Object1的类型还是Object2的类型?

目前我有:

assertTrue(myObject instanceof Object1);
assertTrue(myObject instanceof Object2);
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否有更有表现力的方式来做到这一点.

例如:

assertObjectIsClass(myObject, Object1);
Run Code Online (Sandbox Code Playgroud)

我能做到这一点:

assertEquals(myObject.class, Object1.getClass());
Run Code Online (Sandbox Code Playgroud)

是否有一个特定的断言方法,允许我以更优雅,流畅的方式测试对象的类型?

java junit unit-testing

176
推荐指数
6
解决办法
15万
查看次数

使用JUnit配置IntelliJ IDEA以进行单元测试

我决定今天早上通过试用版试用IntelliJ并安装了JUnit插件.我创建了一个新的Java项目,我想为它编写一个测试用例.

如何将junit.jar文件添加到项目中?(我实际上想将它添加到每个java项目中,现在和永远更多 - 有没有办法做到这一点?).

junit unit-testing intellij-idea

175
推荐指数
4
解决办法
20万
查看次数

Assert包含jUnit中的字符串

是否有更好的方式在jUnit中编写

String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
Run Code Online (Sandbox Code Playgroud)

java string junit assert

174
推荐指数
7
解决办法
15万
查看次数

Hudson支持的JUnit XML格式规范是什么?

我有Hudson作为持续集成服务器,我想使用选项'发布JUnit测试结果报告'.但是我不使用xUnit工具进行测试,而是使用shell脚本运行测试并以简单格式返回结果.我想创建一个脚本,将这些结果转换为JUnit格式.所以我很有趣JUnit文件必须看起来如何?

junit hudson xunit jenkins

173
推荐指数
6
解决办法
18万
查看次数

未找到类:IntelliJ中的空测试套件

我刚刚在我的大学开始计算机科学课程,而且我在使用IntelliJ时遇到了一些问题.当我尝试运行单元测试时,我收到了消息

Process finished with exit code 1
Class not found: "edu.macalester.comp124.hw0.AreaTest"Empty test suite.
Run Code Online (Sandbox Code Playgroud)

我还在屏幕左侧看到一条标题为"未找到测试"的消息.我的测试代码在这里:

package edu.macalester.comp124.hw0;


import org.junit.Test;
import static org.junit.Assert.*;

public class AreaTest {

    @Test
    public void testSquare() {
    assertEquals(Area.getSquareArea(3.0), 9.0, 0.001);
    }

    @Test
    public void testCircle() {
    assertEquals(Area.getCircleArea(3.0), 28.2743, 0.001);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的项目代码在这里:

package edu.macalester.comp124.hw0;

import java.lang.Math;
public class Area {

/**
 * Calculates the area of a square.
 * @param sideLength The length of the side of a square
 * @return The area
 */
public static double …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing intellij-idea

172
推荐指数
15
解决办法
15万
查看次数

如何用mockito模拟最后一堂课

我有一个最后的课,类似这样:

public final class RainOnTrees{

   public void startRain(){

        // some code here
   }
}
Run Code Online (Sandbox Code Playgroud)

我在其他类中使用此类,如下所示:

public class Seasons{

   RainOnTrees rain = new RainOnTrees();

   public void findSeasonAndRain(){

        rain.startRain();

    }
}
Run Code Online (Sandbox Code Playgroud)

在我的JUnit测试类中,Seasons.java我想模拟这个RainOnTrees类.我怎么能和Mockito一起做这件事?

java junit mockito

169
推荐指数
13
解决办法
21万
查看次数

将本地文件传递到Java中的URL

URL为了进行单元测试,如何使用本地文件创建新对象?

java url junit

164
推荐指数
6
解决办法
23万
查看次数

标签 统计

junit ×10

java ×8

unit-testing ×5

assert ×2

intellij-idea ×2

mockito ×2

hudson ×1

jenkins ×1

logging ×1

mocking ×1

string ×1

url ×1

xunit ×1