¿Hay alguna herramienta para evaluar la cobertura del código para las secuencias de comandos R utilizando el paquete testthat
? No encontré nada en Google excepto una mención del tema en la sección Trabajo futuro de an RJournal article.Cobertura del código R para el paquete de prueba
Respuesta
La voy a responder a mi propia pregunta :-)
me hice la misma pregunta en el sitio del proyecto. Parece que por el momento no existe tal soporte para la prueba que biblioteca, pero la posibilidad se abrió recientemente mediante el uso de la versión de desarrollo de R y la explotación de algunas características nuevas del perfilador. Desafortunadamente, parece un gran trabajo para hacer eso, pero espero que alguien tome la iniciativa en eso.
Encuentra los detalles in this ticket.
He aquí un intento de calcular la cobertura de prueba para un conjunto de archivos de R en el nivel de función:
https://gist.github.com/cannin/819e73426b4ebd5752d5
Depende el uso de expresiones regulares para encontrar donde se crean funciones y cuando se les llama.
¡Está el recién llegado covr
package que parece hacer todo lo que quiere, y más! Proporciona integración con diversos servicios de CI y brillante. Funciona con cualquier tipo de infraestructura de prueba (testthat, RUnit, cualquier otra cosa) y también funciona con código compilado.
lo que sigue es sólo un caso de demostración muy simple Compilé rápidamente para que pueda empezar.
library(devtools)
install_github("jimhester/covr")
create("testcovr")
use_testthat("testcovr")
Añadir un archivo que contiene testcovr/R/doublefun.r
doublefun <- function(x, superfluous_option) {
if (superfluous_option) {
2*x
} else {
3*x
}
}
y un archivo que contiene testcovr/tests/testthat/test.doublefun.r
context("doublefun")
test_that("doublefun doubles correctly", {
expect_equal(doublefun(1, TRUE), 2)
})
y vuelva a ejecutar, por ejemplo,
test("testcovr")
## Testing testcovr
## doublefun : .
library(covr)
package_coverage("testcovr")
## doublefun : .
##
## Package Coverage: 66.67%
## R/doublefun.r: 66.67%
zero_coverage(package_coverage("testcovr"))
## doublefun : .
##
## filename first_line last_line first_column last_column value
## 3 R/doublefun.r 5 5 9 11 0
El paquete de prueba en sí usa covr para medir la cobertura del código. Esto es visible en testthat [archivo travis.yml] (https://github.com/hadley/testthat/blob/24d76a1ed7b018440dd91450fce8a02420480955/.travis.yml). –
- 1. Cobertura del código y prueba unitaria del código Python
- 2. Cobertura del código de prueba unitaria: ¿tiene una cobertura del 100%?
- 3. Cobertura del código con PHPUnitSeleniumTestcase
- 4. XCode - ¿Cobertura del código?
- 5. Dependencias del paquete R
- 6. java.lang.RuntimeException: Stub! - ¿Cobertura del código de Android?
- 7. Cobertura de código/cobertura recomendada valores
- 8. Nunidad y código de cobertura para C#
- 9. Prueba unitaria distribuida y cobertura de código en Python
- 10. Averiguar cobertura de la prueba
- 11. TDD y Cobertura de código
- 12. Ignorar la cobertura del código para pruebas unitarias en EclEmma
- 13. ¿Qué distancia toma la cobertura del código?
- 14. Medir la cobertura del código solo en el nuevo código
- 15. Prueba de integración OSGI y Cobertura de código
- 16. google-test: código de cobertura
- 17. Cómo obtener cobertura de código cuando se prueba Silverlight
- 18. Cobertura del código de medición en Delphi
- 19. Rubí prueba Cartografía Cobertura herramienta
- 20. Herramientas de cobertura de código para Scala
- 21. Cobertura frente al código alcanzable
- 22. ¿Qué es la cobertura del código?
- 23. jUnidad: ¿Cómo determinar el nivel de cobertura del código?
- 24. Requerir la versión mínima del paquete R
- 25. Cómo generar el Informe de Cobertura del Código Cobertura usando Maven de Hudson
- 26. ¿Hay alguna manera de deshabilitar la cobertura de código en PHPUnit para una sola prueba?
- 27. Cobertura de código para PL/SQL
- 28. ¿Garantiza la cobertura del código en las pruebas unitarias?
- 29. R instala el paquete globalmente
- 30. Cómo excluir el paquete de simulacro del informe de cobertura de Python usando nosetests
Parece que esta respuesta ya está obsoleta; ver mi respuesta – jhin