5/7/2010 20:56 El Bruno

[TFS2008] HowTo: Configurar el servicio TFS Build 2008 para que ejecute correctamente las pruebas unitarias definidas con .Net 4.0 y Visual Studio 2010

image47dd1de4

Buenas,

hace un tiempo escribí sobre los cambios en la configuración que se debían realizar para poder compilar proyectos desarrollados con Visual Studio 2010 y con target .Net Framework 4.0 utilizando TFS 2008. Este cambio es el primer paso hacia una serie de momentos de iluminación que ocasionan que todo aquello que piensas que es trivial, se vuelva extremadamente complicado. Es decir, si bien son familiares cercanos VS2010 y TFS2008, se llevan un poco de los pelos en algunas cosas.

Por ejemplo, en la ejecución de pruebas unitarias. Un detalle a tener en cuenta es que si se trabaja con los valores por defecto de TFS2008, la ejecucion de pruebas unitarias se realizará con las herramientas de VS2008 y claro, el QTAgent es myy buena gente, pero ha evolucionado un poco en VS2010. Para no tener este problema es necesario “sobreescribir” el valor de 2 propiedades específicas de los builds de 2008 que son MSTestRefPath y TeamBuildRefPath.

  • MSTestRefPath.  Esta propiedad define el path para las herramientas de testing (las que están en Microsoft.VisualStudio.QualityTools.MSBuildTasks.dll).  Desde la versión de 2005 es overridable, para que ensamblados que apunten a VS2005 puedan ser probados con el framework 8.0 de pruebas unitarias.
  • TeamBuildRefPath. Proporciona la ruta de acceso a archivos binarios de Team Build. Por lo general está apuntando a %ProgramFiles%\Microsoft Visual Studio 10\Common7\IDE\PrivateAssemblies.

Para sobreescribir estas propiedades con los valores correctos de VS2010, he creado un target llamado [ElTargetDeLaMuerte] que llamo al principio de mi build y de esta forma ya puedo trabajar con las herramientas de testing en la versión correcta.

 

   1: <Target Name="ElTargetDeLaMuerte">
   2:  
   3:   <!-- MSTestRefPath -->
   4:   <CreateProperty 
   5:     Value="C:\Archivos de programa\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies">
   6:     <Output TaskParameter="Value" PropertyName="MSTestRefPath" /> 
   7:   </CreateProperty>
   8:   <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)"
   9:     Status="Succeeded" Message="- MSTestRefPath: [$(MSTestRefPath)]" /> 
  10:  
  11:   <!-- TeamBuildRefPath --> 
  12:   <CreateProperty 
  13:     Value="C:\Archivos de programa\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies">
  14:     <Output TaskParameter="Value" PropertyName="TeamBuildRefPath" /> 
  15:   </CreateProperty>
  16:   <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Status="Succeeded"
  17:     Message="- TeamBuildRefPath: [$(TeamBuildRefPath)]" /> 
  18:  
  19: </Target>

 

 

Saludos @ Home

El Bruno

PD: no hay ningun tipo de restricciones para cambiar el nombre del Target. Sé que a alguno no le gustará [ElTargetDeLaMuerte], otras opciones válidas para TFS2008 son [MasComplicadoQueJackBauer] o [NosFuimosEnCuartos].

Archivado en: ,,
Comparte este post: