Awesome
ExIntegrationCoveralls
A library for run-time system code line-level coverage analysis. You can use it to evaluate the intergration test coverage.
realistic practice:
Running Tests
To run tests with coverage data, run the following command:
mix test --cover --exclude real_cover
Installation
The package can be installed by adding ex_integration_coveralls
to your list of dependencies in mix.exs
:
def deps do
[
{:ex_integration_coveralls, "~> 0.9.0"}
]
end
The docs can be found at https://hexdocs.pm/ex_integration_coveralls.
Quick Start
Once your application is release, up and running. You only need the following three steps to do run-time coverage collection:
- Step 1、Connects a shell to the running node which your application is running:
/path/bin/your_app remote_console
- Step 2、Specific the application start coverage collection:
ExIntegrationCoveralls.start_app_cov("your_app_name")
Note: the your_app_name
must exist in the return app list of :application.which_applications.
- Step 3、Conduct external testing against the above application. Get run-time coverage or post coverage data to coverage system.
ExIntegrationCoveralls.get_app_total_cov("your_app_name")
# post coverage data
ExIntegrationCoveralls.post_app_cov_to_ci(url, extends, "your_app_name")
Note: Your application release package should include the source code. ExIntegrationCoveralls will use the source code to caculate coverage stats. The general structure is as follows:
.
├── bin
│ ├── explore_ast_app
│ ├── explore_ast_app.bat
│ ├── explore_ast_app_rc_exec.sh
│ ├── no_dot_erlang.boot
│ └── start_clean.boot
├── erts-12.1
│ ├── bin
│ ├── doc
│ ├── include
│ ├── info
│ ├── lib
│ └── src
├── lib
│ ├── artificery-0.4.3
│ ├── asn1-5.0.17
│ ├── certifi-2.9.0
│ ├── elixir-1.12.3
│ ├── ex_integration_coveralls-0.4.0 # your running app
│ ├── explore_ast_app-0.1.0
│ │ ├── consolidated
│ │ ├── ebin
│ │ └── lib # source code in here
│ └── unicode_util_compat-0.7.0
└── releases
├── 0.1.0
├── RELEASES
└── start_erl.data
Note: If you use the distillery to get OTP release, and config set include_src: true
, then you can get the above structure. But if you use the Elixir origin mix release
, this situation needs to be handled manually.
License
Distributed under the MIT License. See LICENSE for more information.
Acknowledgements
Thanks for these awesome resources that were used during the development of the ExIntegrationCoveralls: