No, no he hecho pruebas unitarias de la generación de documentos de MS Word, pero, como dice Ingó Vals, no debería ser diferente de cualquier otra forma de prueba unitaria.
1) [Opcional: para garantizar que comprende el uso correcto del SDK según sus necesidades]. Descubra cómo su aplicación debe conducir el SDK. Escriba algunos scripts de prueba que imiten la funcionalidad prevista y asegúrese de que los documentos de Word que generan satisfacen sus expectativas.
2) Cree una interfaz (o interfaces) que contenga métodos que correspondan a la funcionalidad que necesita para la generación de su documentación. Nota: la interfaz no necesita ofrecer la funcionalidad completa del SDK OpenXML, solo la funcionalidad que necesita para su aplicación.
3) Crear una aplicación concreta de la interfaz, que reenvía las llamadas a la SDK OpenXML
4) Utilizar la interfaz que ha creado en su aplicación para llevar a cabo la generación de documentos.
5) Use NUnit y NMock (o similar) para escribir pruebas de unidad que manejan la capa de generación de su aplicación. Estas pruebas deben usar una interfaz simulada, en lugar de una instancia de la implementación concreta. Ahora puede afirmar en sus pruebas que su capa de generación se comporta como espera.
¿Por qué las pruebas de unidad OpenXML tienen que ser diferentes de las estándar? ¿Estás tratando de validar si el documento puede abrirse en palabras o si se verá bien? –
No es diferente, es técnicamente difícil. La prueba típica es Arrange-Act-Assert. Entonces la pregunta es ¿cómo podemos hacer fácilmente la última parte? Afirmar. Posiblemente usando alguna automatización de palabras o un marco de automatización de UI, pero no veo una manera fácil de hacer esto. Por lo tanto, termino con las pruebas que generan el informe y la apertura en word, por lo que verifico manualmente si el informe está bien. No es una prueba de unidad "pura", pero es mejor que ejecutar la aplicación completa para generar los informes necesarios. También estoy interesado en el código de prueba que funciona directamente con Open XML, todas las demás piezas que he separado y probado con las pruebas unitarias habituales. – Andrii