11
votes

Échouer une construction si la couverture du code est inférieure à un seuil de TFS2012

J'essaie d'échouer Construit dans le service TFS (Hébergé TFS2012) lorsque la couverture du code est inférieure à un seuil.

Je joue avec la solution à http://scrumdod.blogspot.co.uk/2011/04/fail-build-if-code-couverage-is-low.html

Cependant, j'utilise TFS2012 et que beaucoup de choses semblent avoir changé. En particulier, la configuration de la fonction de test est complètement différente et il ne semble pas être un moyen d'obtenir ou de définir l'emplacement et le nom du fichier. Coverage dans le modèle de processus de construction ou le fichier .RunSettings.

Comment puis-je continuer à trouver (ou à définir) l'emplacement du fichier. Coverage dans TFS2012 ou TFSSservice?

alternement, y a-t-il une autre façon que je puisse échouer la construction si la couverture du code est inférieure à un seuil?


0 commentaires

3 Réponses :


0
votes

Vous pouvez ajouter votre activité après l'activité RUNTESTS dans laquelle vous pouvez interroger le Build pour les pièces jointes de couverture de code et Fusionner et analyser les fichiers. Coverage pour réussir / échouer la construction.


0 commentaires

9
votes

Cela nécessitera quelques étapes:

  1. Créer une activité de construction personnalisée li>
  2. Ajoutez le contrôleur activité à la construction li>
  3. Invoke que l'activité de construction personnalisée dans un nouveau processus de construction li>
  4. Utilisez le nouveau processus de construction li> Ol>

    1. Créer une activité de construction personnalisée h2>

    Faire un nouveau projet dans VS2012 (j'ai appelé mes CodeCoverageLibrary référence les ensembles suivants:.. P>

    • Microsoft.TeamFoundation.Build.Client li>
    • Microsoft.TeamFoundation.Client li>
    • Microsoft.TeamFoundation.TestManagement.Client li>
    • Microsoft.TeamFoundation.WorkItemTracking.Client li>
    • Système li>
    • System.Activities li>
    • System.Core li>
    • System.Xaml li> Ul>

      Vous pouvez utiliser le code suivant:. P>

            <Sequence DisplayName="Code Coverage Check" mtbwt:BuildTrackingParticipant.Importance="None">
              <Sequence.Variables>
                <Variable x:TypeArguments="x:Double" Name="CodeCovered" />
              </Sequence.Variables>
              <ccl:GetCodeCoverage DisplayName="Getting Code Coverage" BuildDetail="[BuildDetail]" Result="[CodeCovered]" />
              <If Condition="[CodeCovered &lt; CodeCoverageTolerance]">
                <If.Then>
                  <Sequence DisplayName="Comparing Code Coverage Against Tolerance">
                    <mtbwa:SetBuildProperties DisplayName="Set TestStatus to Failed" mtbwt:BuildTrackingParticipant.Importance="Low" PropertiesToSet="TestStatus" TestStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Failed]" />
                    <mtbwa:WriteBuildError Message="[&quot;Code Coverage of &quot; + CodeCovered.ToString(&quot;P&quot;) + &quot; is less than required &quot; + CodeCoverageTolerance.ToString(&quot;P&quot;)]" />
                  </Sequence>
                </If.Then>
              </If>
            </Sequence>
          </mtbwa:AgentScope>
          <mtbwa:InvokeForReason DisplayName="Check In Gated Changes for CheckInShelveset Builds" Reason="CheckInShelveset">
            <mtbwa:CheckInGatedChanges DisplayName="Check In Gated Changes" />
          </mtbwa:InvokeForReason>
        </Sequence>
      </Activity>
      


2 commentaires

Merci, je vais essayer ça!


Réponse très tardive à cela, mais j'essaie d'utiliser ces gettings dans un fichier Stand seul .exe. Cela continue de me donner des blocs Tfsbuild, ce qui me donne beaucoup de blocs non couverts :(. Puis-je m'assurer que je ne reçois que pour mes fichiers de projet, d'une manière ou d'une autre?



0
votes

Une seule chose sur la solution ci-dessus, vous devez réviser le calcul comme celui-ci pour assurer une valeur de pourcentage est renvoyé à deux décimales xxx


0 commentaires