¿Alguien ha recibido alguna sugerencia para probar en unidades un complemento de aplicación administrada para Office? Estoy usando NUnit pero tuve los mismos problemas con MSTest.Pruebas unitarias de .NET Add-In para Microsoft Office
El problema es que hay un ensamblado .NET cargado dentro de la aplicación de Office (en mi caso, Word) y necesito una referencia a esa instancia del ensamblado .NET. No puedo simplemente crear una instancia del objeto porque no tendría una instancia de Word para hacer las cosas.
Ahora, puedo usar Application.COMAddIns ("Nombre del complemento"). Interfaz de objeto para obtener una referencia, pero me da un objeto COM que se devuelve a través de RequestComAddInAutomationService. Mi solución hasta ahora es que ese objeto tenga métodos proxy para cada método en el objeto .NET real que quiero probar (todo configurado en compilación condicional para que desaparezca en la versión lanzada).
El objeto COM (una clase VB.NET) en realidad tiene una referencia a la instancia de lo real complemento, pero he intentado devolver esa de NUnit y me dieron un buen p/error Invocar:
System.Runtime.Remoting.RemotingException: este proxy remoto no tiene sumidero de canal, lo que significa que el servidor no tiene canales de servidor registrados que están escuchando, o esta aplicación no tiene un canal de cliente adecuado para comunicarse con el servidor. en System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke (IMethodCallMessage reqMcmMsg, Boolean useDispatchMessage, Int32 CALLTYPE) en System.Runtime.Remoting.Proxies.RemotingProxy.Invoke (I-Mensaje reqMsg) en System.Runtime.Remoting.Proxies. RealProxy.PrivateInvoke (MessageData & MSGDATA, el tipo Int32)
intenté hacer el principal complemento COM visible y el error cambios:
System.InvalidOperationException: Operación no es válida debido al estado actual del objeto . en System.RuntimeType.ForwardCallToInvokeMember (String memberName, banderas BindingFlags, meta objeto, Int32 [] aWrapperTypes, MessageData & MSGDATA)
Aunque no tengo una solución alternativa, es desordenado y pone un montón de código de prueba en el proyecto real en lugar del proyecto de prueba, que no es realmente la forma en que NUnit debe funcionar.
¡Tendría que burlarme de Office para que funcione! –
@RichardGadsden Sí, está bien y lo hice para Excel usando NSubstitute, no fue tan difícil al final. –