(译) 14

编程入门 行业动态 更新时间:2024-10-23 07:36:35

(译) 14

(译) 14

Mockito 提供了在真实对象上创建spy选项。当调用spy时, 就调用真实对象的实际方法。

语法

//create a spy on actual object
calcService = spy(calculator);//perform operation on real object
//test the add functionality
Assert.assertEquals(mathApplication.add(20.0, 10.0),30.0,0);

例如

步骤1−创建一个称为 CalculatorService 的接口, 以提供数学函数

文件: CalculatorService. java

/*** 计算相关服务*/
public interface CalculatorService {/*** 加法** @param input1* @param input2* @return*/public double add(double input1, double input2);/*** 减法** @param input1* @param input2* @return*/public double subtract(double input1, double input2);/*** 乘法** @param input1* @param input2* @return*/public double multiply(double input1, double input2);/*** 除法** @param input1* @param input2* @return*/public double divide(double input1, double input2);
}

步骤2−创建一个 JAVA 类来表示 MathApplication

文件: MathApplication. java

/*** 数学应用*/
public class MathApplication {private CalculatorService calcService;public void setCalculatorService(CalculatorService calcService) {this.calcService = calcService;}public double add(double input1, double input2) {return calcService.add(input1, input2);}public double subtract(double input1, double input2) {return calcService.subtract(input1, input2);}public double multiply(double input1, double input2) {return calcService.multiply(input1, input2);}public double divide(double input1, double input2) {return calcService.divide(input1, input2);}
}

步骤3−测试 MathApplication 类

让我们测试 MathApplication 类, 通过注入一个 calculatorService 的模拟。模拟将由 Mockito 创建。

在这里, 我们添加了一个模拟方法调用, add () 到模拟对象when ()。但是在测试过程中, 我们在调用 add () 之前调用了subtract ()。当我们使用 Mockito createStrictMock () 创建一个模拟对象时, 该方法的执行顺序很重要。

文件: MathApplicationTester. java

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;import static org.mockito.Mockito.spy;// @RunWith attaches a runner with the test class to initialize the test data
@RunWith(MockitoJUnitRunner.class)
public class MathApplicationTester {private MathApplication mathApplication;private CalculatorService calcService;@Beforepublic void setUp(){mathApplication = new MathApplication();Calculator calculator = new Calculator();calcService = spy(calculator);mathApplication.setCalculatorService(calcService);}@Testpublic void testAdd(){//perform operation on real object//test the add functionalityAssert.assertEquals(mathApplication.add(20.0, 10.0),30.0,0);}class Calculator implements CalculatorService {@Overridepublic double add(double input1, double input2) {return input1 + input2;}@Overridepublic double subtract(double input1, double input2) {throw new UnsupportedOperationException("Method not implemented yet!");}@Overridepublic double multiply(double input1, double input2) {throw new UnsupportedOperationException("Method not implemented yet!");}@Overridepublic double divide(double input1, double input2) {throw new UnsupportedOperationException("Method not implemented yet!");}}
}

步骤4−执行测试用例

在C: \ > Mockito_WORKSPACE中创建名为 TestRunner 的 java 类文件以执行测试用例。

文件: TestRunner. java

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;public class TestRunner {public static void main(String[] args) {Result result = JUnitCore.runClasses(MathApplicationTester.class);for (Failure failure : result.getFailures()) {System.out.println(failure.toString());}System.out.println(result.wasSuccessful());}
}

步骤5−验证结果

使用javac编译器编译类, 如下所示−

C:\Mockito_WORKSPACE>javac CalculatorService.java MathApplication.java MathApplicationTester.java TestRunner.java

现在运行TestRunner以查看结果−

C:\Mockito_WORKSPACE>java TestRunner

验证输出。

true

更多推荐

(译) 14

本文发布于:2024-03-14 07:48:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1735982.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!