首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用Pongo为用Lua编写的自定义Kong API网关插件运行测试时生成和显示覆盖率

如何在使用Pongo为用Lua编写的自定义Kong API网关插件运行测试时生成和显示覆盖率
EN

Stack Overflow用户
提问于 2021-03-30 06:58:04
回答 3查看 700关注 0票数 0

我在Lua上写了几个孔自定义插件。我使用的是空2.3.3和Lua 5.1。

我有一些测试用例(单元测试+集成测试),我正在使用pongo运行-coverage选项来运行它们。我已经安装了luacov (同时还安装了luarocks ),我的所有测试都通过了,但是没有用覆盖数据生成luacov文件。我不是从Docker运行pongo的,我已经在我的本地机器上安装和配置了它(它是LinuxUbuntu20.04)。

我已经尝试了以下几点:

  • my .busted文件正在设置.busted= true、.busted= true和output = "gtest“(已经尝试了utfTerminal、tap和json )
  • 尝试将luacov作为一个依赖项添加到rockspec文件中.构建没有失败,但是没有生成覆盖文件--我甚至尝试在没有pongo的情况下运行测试,直接使用坏包,但是这是一个非常糟糕的选项,因为像
  • 或cjson lib这样的东西没有在LUAPATH

中设置。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-02 20:37:32

一个快速的方法是修改pongo。

编辑pongo.sh文件以:

向已崩溃的--coverage

  • call luacov添加覆盖标志以生成报告luacov

  • display report cat luacov.report.out

找出叫busted的地方,我的第959行:

代码语言:javascript
复制
"/bin/sh" "-c" "bin/busted --coverage --helper=bin/busted_helper.lua ${busted_params[*]} ${busted_files[*]};luacov;cat luacov.report.out"

安装luacov,在安装失败后编辑assets/Dockerfile添加luacov:

代码语言:javascript
复制
    && luarocks install busted-htest \
    && luarocks install luacov \

pongo run会给你

代码语言:javascript
复制
[...]
==============================================================================
Summary
==============================================================================

File                                                                              Hits  Missed Coverage
-------------------------------------------------------------------------------------------------------
/kong-plugin/kong/plugins/myplugin/schema.lua                                     105   1      99.06%
/kong-plugin/spec/myplugin/01-schema_spec.lua                                     199   5      97.55%
[...]
票数 1
EN

Stack Overflow用户

发布于 2021-05-06 21:50:13

您可以创建一个基于pongo的码头映像。

spec/unit/docker/Dockerfile

代码语言:javascript
复制
FROM kong-pongo-test:2.3.2
USER root
RUN luarocks install luacov
WORKDIR /kong-plugin
COPY . .

spec/unit/docker/run.sh

代码语言:javascript
复制
#!/bin/sh
busted --coverage spec/unit
luacov
cat luacov.report.out

代码语言:javascript
复制
docker build -f spec/unit/docker/Dockerfile -t my-coverage .
docker run my-coverage sh spec/unit/docker/run.sh
票数 0
EN

Stack Overflow用户

发布于 2021-07-08 20:19:04

Pongo在这方面获得了一些支持(仍然是公关)。注意,它只包括单元测试,而不是集成测试。

请参阅https://github.com/Kong/kong-pongo/pull/184

顺便说一句:其他程序太复杂了,海事组织,您可以添加.pongo/pongo-setup.sh来安装LuaCov,并将.luacov文件从/kong-plugin移动到/kong。这应该是唯一需要的。

可以通过传递标志来运行覆盖范围的测试,而不需要编辑pongo或dockerfile。例如,试试pongo run -- --coverage

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66866103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档