Find us on…
ForUnitTest: A Fortran library for unit testing.
use forunittest, only: unit_tests
type(unit_tests) :: tests
! Initialize the test suite with 'n' test cases
call tests%initialize(n)
! Run test number i
call tests%test(i)%check(&
   name     = "Test name",         & ! unique name shown in report
   res      = result_value,        & ! Actual result (real, int, logical, complex)
   expected = expected_value,      & ! Expected value (same type/shape as res)
   tol      = 1e-6_rk,             & ! Optional: tolerance for real/complex comparisons
   msg      = "Short description", & ! shown in summary
   group    = "Group name")          ! used in grouped summaries
! Print test summary
call tests%summary(&
   required_score = 80.0_rk, & ! Required % of passing tests
   verbose        = 3,       & ! 0: none, 1: group only, 2: test only, 3: both
   stop_fail      = .true.)    ! Stop program if score is below required
To use ForUnitTest as a dependency in your fpm project, include the following line in your fpm.toml file:
[dependencies]
forunittest = {git="https://github.com/gha3mi/forunittest.git"}
Clone the repository:
Clone the ForUnitTest repository from GitHub using:
git clone https://github.com/gha3mi/forunittest.git
cd forunittest
Run the demo:
fpm run --example demo

| Compiler | macos | ubuntu | windows | 
|---|---|---|---|
flang-new | 
- | fpm ✅ cmake ✅ | fpm ✅ cmake ✅ | 
gfortran | 
fpm ✅ cmake ✅ | fpm ✅ cmake ✅ | fpm ✅ cmake ✅ | 
ifx | 
- | fpm ✅ cmake ✅ | fpm ✅ cmake ✅ | 
lfortran | 
fpm ❌ cmake ❌ | fpm ❌ cmake ❌ | fpm ❌ cmake ❌ | 
nvfortran | 
- | fpm ✅ cmake ✅ | - | 
The most up-to-date API documentation for the main branch is available
here.
To generate the API documentation for ForUnitTest using
ford run the following
command:
ford README.md
Contributions to ForUnitTest are welcome!
If you find any issues or would like to suggest improvements, please open an issue.