今天跟大家唠唠我搞的这个 “mocha java” 实践,也不是真的用 Mocha 搞 Java,别误会!是想着能不能用 Mocha 这个 JavaScript 测试框架,来测试一下我写的 Java 代码。
起初就是觉得,我 Java 代码写得是不是够健壮,老是自己肉眼看,效率太低,而且容易漏。听说 Mocha 在 JavaScript 测试界挺火的,就寻思着能不能借过来用用。
一开始的想法是这样的:- 先搭个环境,让 Mocha 能跑起来。
- 然后写点测试用例,看看能不能测到我的 Java 代码。
- 要是能搞定,以后写 Java 代码就用它来保驾护航。
环境搭建
Mocha 是 JavaScript 的东西,得先装个 *,这个不用多说,大家都懂。装完 *,就可以用 npm 来安装 Mocha 。我直接全局安装,这样以后用起来方便:
npm install -g mocha
装完之后,命令行敲个 mocha --version
看看是不是安装成功。没问题的话,就该想想怎么让 Mocha 和 Java 代码扯上关系。
桥梁搭建
这才是重点, Mocha 本身肯定不能直接读懂 Java 代码,得有个“桥梁”才行。我查半天资料,发现可以先用 Java 执行器将 Java 代码编译打包成 jar 包,然后用 * 的 child_process
模块来执行这个 jar 包,这样 Mocha 就可以通过输入输出来间接测试 Java 代码。
我得写个 JavaScript 脚本,用 child_process
来执行 Java 的 jar 包。大概代码长这样:
javascript
const { exec } = require('child_process');
function executeJava(className, method, params, callback) {
const command = `java -jar * ${className} ${method} ${*(' ')}`; // 你的jar包名称
exec(command, (error, stdout, stderr) => {
if (error) {
*(`执行出错: ${error}`);
return callback(error);
if (stderr) {
*(`标准错误输出: ${stderr}`);
*(`标准输出: ${stdout}`);
callback(null, stdout);
* = { executeJava };
这里 是你的 Java 项目打包后的 jar 包名称。 className
是你要调用的 Java 类名, method
是方法名,params
是参数,然后把这些信息都传给 Java 程序。
编写测试用例
有这个 “桥梁”,就可以开始写测试用例。新建一个 JavaScript 文件,比如 ,然后引入 Mocha 和我们上面写的 executeJava
函数:
javascript
const assert = require('assert');
const { executeJava } = require('./java-executor'); // 桥梁文件
describe('Java代码测试', function() {
it('测试加法函数', function(done) {
executeJava('Calculator', 'add', [1, 2], (err, result) => {
*(parseInt(result), 3);
done();
这里我写一个简单的测试用例,测试一个 Java 类的 add
方法。Calculator
是 Java 类名,add
是方法名,[1, 2]
是参数。然后,断言 Java 代码返回的结果是不是 3。
Java 代码准备
别忘准备 Java 代码。我写一个简单的 Calculator
类,里面有个 add
方法:
java
public class Calculator {
public static void main(String[] args) {
String className = args[0];
String methodName = args[1];
int[] params = new int[* - 2];
for (int i = 2; i < *; i++) {
params[i - 2] = *(args[i]);
if (*("Calculator") && *("add")) {
*(add(params[0], params[1]));
public static int add(int a, int b) {
return a + b;
一定要记得把这个 Java 代码编译打包成 。编译打包过程就不细说,大家都懂的。
运行测试
在命令行里运行 mocha
命令,就可以看到测试结果。如果一切顺利,应该会显示测试通过。
总结
这个 “mocha java” 实践就是用 Mocha 来间接测试 Java 代码。虽然有点绕,但是确实能用。以后写 Java 代码,就可以用 Mocha 来跑跑测试,心里踏实多。这只是一个简单的例子,实际应用中可能还要考虑更多情况,比如异常处理、复杂参数等等。不过思路都是一样的。
希望这个分享对大家有所帮助!