# NSTF Testing Frameworks

The `test.assessr` package checks package structure and test drivers to detect and classify testing configurations.

If it detects a non-standard testing framework (NSTF) (i.e. `RUnit‑based`, `BiocGenerics`, `data.table`, `tinytest`, and `custom test layouts`), it runs non-standard testing workflows depending on the framework type:

The following example is the workflow for `BiocGenerics` which involves Bioconductor RUnit framework

`BiocGeneric workflow`

- Builds a source-to-test mapping.

- Removes any `run_unitTests.R` wrapper from the mapping.

- Prepares a test environment before running RUnit tests:

- Detaches commonly attached BioC infrastructure packages (`IRanges`, `S4Vectors`, `BiocGenerics`) to avoid namespace/shim conflicts.

- Calls `pkgload::load_all()` to load the package under test.

- Clears `R_TESTS` to avoid R CMD check harness interference when running RUnit programmatically.

- Identifies problem/skip-able tests (which should use `RUnit::runTestFile()` + `RUnit::getErrors()` per file).

- Builds a list of test files under `inst/unitTests` excluding any that should be skipped.

- Exposes namespace objects + datasets to a dedicated environment and runs coverage with `covr::environment_coverage()`.

- If `BiocGeneric workflow` is successful, then a unit test data coverage object like this is produced:

`BiocGeneric workflow unit test data coverage object`

R object | field | element 1 | element 2 | value
--- | --- | --- | --- | ---
test_package | pkg_name |  |  | “BiocGenerics”
| pkg_ver |  |  | “0.56.0”
| date_time |  |  | “2026-03-09 14:27:36.673915”
| executor |  |  | “xxxxxxx”
| sysname |  |  | “Linux”
| version |  |  | “#1 SMP PREEMPT_DYNAMIC Mon Dec 1 05:36:50 UTC 2025”
| release |  |  | “6.1.158-180.294.amzn2023.x86_64”
| machine |  |  | “x86_64”
| r_version |  |  | “4.4.1”
| test_framework_type |  |  | non-standard testing framework - Bioconductor
| total_cov |  |  | 15.5
| res_cov | name |  | “BiocGenerics”
|  | coverage | filecoverage | num [1:57(1d)] 0 0 0 0 0 0 0 0 0 0 …
|  |  |  | attr(*, “dimnames”)=List of 1 [1:57] “/tmp/RtmpB1gcqI/R.INSTALL8ff8254343d/S4Vectors/R/DataFrame-class.R” “/tmp/RtmpB1gcqI/R.INSTALL8ff8254343d/S4Vectors/R/DataFrame-combine.R” “/tmp/RtmpB1gcqI/R.INSTALL8ff8254343d/S4Vectors/R/DataFrame-comparison.R” “/tmp/RtmpB1gcqI/R.INSTALL8ff8254343d/S4Vectors/R/DataFrame-utils.R” …
|  |  | totalcoverage | 15.5
| errors |  |  | NA
| notes |  |  | NA
functions_no_tests | source_file |  |  | [1:67] “annotation.R” “aperm.R” “append.R” “as.data.frame.R” …
| test_file |  |  | [1:67] NA NA NA NA …
| evidence |  |  | [1:67] NA NA NA NA …
| has_tests |  |  | [1:67] FALSE FALSE FALSE FALSE FALSE FALSE …
| comment |  |  | [1:67] “No tests found” “No tests found” “No tests found” “No tests found” …
tests_skipped |  |  |  | chr(0)
tests_passing |  |  |  | chr [1:7] “/tmp/RtmpneA8hi/temp_file_53d27b76020b/BiocGenerics/inst/unitTests/test_combine.R” “/tmp/RtmpneA8hi/temp_file_53d27b76020b/BiocGenerics/inst/unitTests/test_Extremes.R” “/tmp/RtmpneA8hi/temp_file_53d27b76020b/BiocGenerics/inst/unitTests/test_format.R” “/tmp/RtmpneA8hi/temp_file_53d27b76020b/BiocGenerics/inst/unitTests/test_mapply.R” …
n_functions_tests_passing |  |  |  | int 7
n_functions_no_tests |  |  |  | int 67
n_functions_tests_skipped |  |  |  | int 0

The `NSTF unit test data coverage objects` are not able to give details about test block start and end lines and the expectation types.