使用空手道自动测试MongoDB的正确方法

使用空手道自动测试MongoDB的正确方法,mongodb,junit,continuous-integration,automated-tests,karate,Mongodb,Junit,Continuous Integration,Automated Tests,Karate,我正在建立一个自动化的API测试平台,我选择了空手道作为工作。糟糕的是,它的引擎是为Java生态系统编写的,在Java生态系统中,社区对mongoDB技术的支持不如NodeJ强大 因为我需要在QA环境中对DBs进行种子设定/清理以执行测试,但我只有一个使用NodeJ和特定库制作的种子设定脚本,所以现在我有两个机会 继续使用NodeJS init脚本,在运行空手道测试之前填充数据库 使用Java种子库,该库支持从文件(例如JSON)或DB转储加载夹具,并在每个特性之前使用JUnit挂钩执行种子 这

我正在建立一个自动化的API测试平台,我选择了空手道作为工作。糟糕的是,它的引擎是为Java生态系统编写的,在Java生态系统中,社区对mongoDB技术的支持不如NodeJ强大

因为我需要在QA环境中对DBs进行种子设定/清理以执行测试,但我只有一个使用NodeJ和特定库制作的种子设定脚本,所以现在我有两个机会

继续使用NodeJS init脚本,在运行空手道测试之前填充数据库

使用Java种子库,该库支持从文件(例如JSON)或DB转储加载夹具,并在每个特性之前使用JUnit挂钩执行种子

这两种备选方案都应该使开发人员/质量保证人员能够构建多个固定装置,并选择哪一个适合某一组特性测试。例如,在场景1中,我可以编写一个sh脚本

npm run seed
mvn clean test
但它缺乏qa对加载哪些数据的控制,除非您在这个shell脚本中没有指定它,这意味着它必须经常更新,并且必须知道实现了哪些功能以及何时运行它们。另一个缺点是CI服务器必须安装NodeJ,并且管道配置必须知道它,并且CI服务器上不应该安装很多工具

有什么建议吗?
谢谢

因为有了Java互操作,您可以很容易地从空手道调用操作系统命令

* def FileUtils = Java.type('com.intuit.karate.FileUtils')
* def runtime = java.lang.Runtime.getRuntime()
* def exec = function(cmd){ return FileUtils.toString(runtime.exec(cmd).getInputStream()) }
* def result = exec('my-nodejs-cli-command')
您拥有所有环境切换灵活性,例如,您可以使用变量作为exec参数


MongoDB没有通过REST调用它的方法吗。因为空手道恰好擅长提出休息要求:

谢谢!因此,您建议在单独的进程中运行我的种子脚本,并在我的环境中安装nodejs!如果我可以直接在空手道javascript函数中编写nodejs脚本,这将非常好,主要是为了利用这个包management@CarmineIngaldi由于GraalVM集成,这实际上可能在今年晚些时候发生。但现在不行,对不起: