¿hay algún buen marco que pueda ayudar a la unidad de código de prueba en Excel?¿hay algún paquete de prueba de unidad bueno para Excel
Respuesta
Supongo que quiere probar el código VBA en módulos.
En primer lugar, incluso si hubiera un buen marco de pruebas de unidades disponible para VBA, sospecho que las pruebas serían muy complejas, debido a las dependencias con el propio Libro de trabajo. Si tu código interactúa con el libro de trabajo y sus objetos va a ser una pesadilla total porque no puedes burlarte de nada de esto: imagine probar un módulo que lea datos en una hoja y cree una tabla en otra ... En esencia , un libro de Excel combina su persistencia, dominio y presentación, todo en uno, lo que no es bueno para las pruebas.
El otro caso es un código que está principalmente orientado a la computación. Si ese código se vuelve lo suficientemente complejo como para justificar las pruebas, una cosa que podría considerar es mover su código fuera de VBA, para que sea comprobable. A menudo trabajo con clientes que tienen grandes modelos financieros, con VBA pesado, y cuando puedo me gusta extraer el código VBA a C# y convertirlo en un complemento de VSTO. El beneficio es que puedo probar el código y trabajar en Visual Studio, en lugar del VBA IDE.
Hay un par de experimentos dando vueltas por Internet: EUnit y VBAUnit. Ninguno de estos proyectos parece tener comunidades activas, por lo que es poco probable que sean tan sólidos como (digamos) JUnit o NUnit. Pero pueden ser lo suficientemente buenos para tus propósitos.
Esto es bueno ... Estoy convenciendo a mi amigo actuario para que intente jugar con eunit – jayunit100
Yo uso Debug.Assert
. Organizo las pruebas en módulos. En cada módulo mantengo un Sub RunAll
que llama a todos los métodos de prueba en ese módulo.
Para ejecutar todas las pruebas en el proyecto, tengo un módulo AllTests con RunAll que llama a RunAll en todos los módulos de prueba.
Simple y funciona muy bien sin ningún problema.
escribí un post sobre cómo se puede utilizar la infraestructura unittest de Python fácilmente para escribir pruebas unitarias para VBA, sino también la lógica de células en general: https://www.zoomeranalytics.com/blog/unittests-for-microsoft-excel
En esencia, puede probar lo siguiente VBA función:
Function mysum(x, y) As Double
mysum = x + y
End Function
utilizando la siguiente unittest en Python:
import unittest
import xlwings as xw
class TestMyBook(unittest.TestCase):
def setUp(self):
# setUp will be called before the execution of each unit test
self.wb = xw.Book('mybook.xlsm') # map workbook
self.mysum = self.wb.macro('Module1.mysum') # map function
def test_mysum(self):
result = self.mysum(1, 2) # get result from VBA
self.assertAlmostEqual(3, result) # test if result corresponds to the expected value
if __name__ == '__main__':
# This allows us to easily run the tests from the command prompt
unittest.main()
Me sorprende no encontrar Rubberduck entre las otras sugerencias. Es un complemento COM para VBE (para todos los hosts de MS Office: Excel, Word, PowerPoint, Access), de código abierto y en desarrollo activo. Sus características principales son pruebas unitarias e inspecciones de código.
una breve descripción, tomada de la página wiki vinculado anteriormente:
Por qué RubberDuck?
Porque queremos un proyecto de mascota, y este es divertido y desafiante. La idea es hacer todo lo posible para que la programación en VBA y refactorice el código VBA heredado, tan agradable como en las versiones modernas de de Visual Studio. El VBE ha tenido su sensación VB6 durante el tiempo que puedo recordar, Rubberduck lo toma ... en otro lugar.
Todo comenzó en Code Review, con una publicación sobre pruebas de unidades en VBA. Se convirtió en una solución de trabajo 100% VBA, y luego queríamos tener esta funcionalidad de prueba unitaria integrada en el IDE - la solución COM complemento comenzó con él.
Tener acceso a todo el modelo de objeto VBE en un complemento COM que puede añadir menús personalizados, barras de herramientas y ventanas acoplables, quisimos analizar e inspeccionar el código y corregir los problemas - o al menos señalarlas .
Luego pensamos empaquetar todo lo que queremos implementar en extender el VBE. Añadimos formas de navegar el código más fácilmente, una lista de elementos todo, y luego tuvimos ideas como integrar el control fuente, implementando algunas refactorizaciones, usando la API Stack Exchange para crear y publicar su código VBA como una pregunta de Revisión de código .
Lo he estado utilizando durante aproximadamente medio año (principalmente en Excel 2010), y ha sido bastante estable y útil. Por lo tanto, lo recomendaría.
- 1. ¿Hay algún punto de serialización de prueba de la unidad?
- 2. Bueno Javascript A/B (Split) Prueba de paquete/biblioteca?
- 3. ¿Hay algún kernel pequeño lo suficientemente bueno para aprender osdev?
- 4. ¿Hay algún buen tutorial (ejemplo) para la unidad de prueba del proyecto base kohana?
- 5. ¿Hay algún repositorio GIT de prueba disponible?
- 6. ¿Hay algún buen software de código abierto para escribir casos de prueba?
- 7. ¿Hay algún paquete para mapeo relacional de objetos en R?
- 8. ¿Hay algún paquete de Java para manejar las URLs construidas?
- 9. ¿Hay algún complemento de prueba de seguridad para los rieles?
- 10. ¿Hay algún analizador EDIFACT de código abierto bueno en Java?
- 11. ¿Hay algún valor en las propiedades de autoejecución de prueba de unidad?
- 12. Marco de prueba de unidad para Vala
- 13. ¿Hay algún paquete todo en uno como XAMPP para Django?
- 14. ¿Hay algún buen paquete de migración de subprocesos de Java?
- 15. ¿Qué marco de prueba de unidad?
- 16. ¿Prueba de unidad para seguridad de hilo?
- 17. (Unidad) Prueba de ArrayAdapter
- 18. Unidad de prueba EJB
- 19. Prueba de unidad CacheManager
- 20. unidad que prueba una unidad de trabajo
- 21. ¿Hay algún Selector de fecha y hora bueno y gratuito disponible para Java Swing?
- 22. Mock UdpClient para prueba de unidad
- 23. Prueba de unidad Descripción pregunta
- 24. de prueba Unidad clases particulares
- 25. ¿Hay algún entorno de prueba SQL 'basado en la web'?
- 26. ¿Métodos de ayuda de prueba de unidad?
- 27. Sockets de prueba de unidad
- 28. Herencia de prueba de unidad
- 29. Ejemplos de prueba de unidad?
- 30. Prueba de unidad Clases estáticas
¿Qué intentas probar y qué idioma estás usando? – Elisha