0

対応する構成ファイルを含むテスト dll のリストを選択しようとしています

MyTest.Tests.dll
MyTest.Tests.config

スクリプトのロード時にdllが利用できないため、createItemを使用する必要があります

<CreateItem Include="$(AssemblyFolder)\*.Tests.dll"
            Condition="???"
  <Output TaskParameter="Include" ItemName="TestBinariesWithConfig"/>
</CreateItem>

私が使用できる条件はありますか、それともこれは間違ったアプローチですか?

ありがとう
マック

編集:

明確にするために、xUnit.Net プロジェクト ファイルを作成する必要があります。これを行う必要があるのは、nCover 経由で xUnit.Console ランナーを介してテストを実行しているためです (聞かないでください!) が、要するにプロジェクト ファイルしか使用できないということです。私が抱えている問題は、.config ファイルが関連付けられたテスト dll がある場合です。構成ファイルがないと、テスト ランナーは失敗します。

これは、条件付きでテスト プロジェクト ファイルに追加の属性 (config-file) を追加する必要があることを意味します。

プロジェクト テンプレート ファイル:

<?xml version="1.0" encoding="utf-8"?>
<xunit>
  <assemblies>
<!-- SAMPLE    <assembly filename="Tests.dll" shadow-copy="false" config-file="Tests.dll.config" />     -->
<!-- @TARGETS@ -->
  </assemblies>
</xunit>

構成ファイルのないテスト dll の FileUpdate タスク。

<FileUpdate
  Files="$(AssemblyFolder)\$(XUnitProjectFileName)"
  Regex="&lt;!-- @TARGETS@ --&gt;"
  ReplacementText="&lt;!-- @TARGETS@ --&gt;%0D%0A&lt;assembly filename='$(AssemblyFolder)\%(TestBinaries.FileName)%(TestBinaries.Extension)' shadow-copy='false' /&gt;"
  />

したがって、テスト dll に対応する構成ファイルがあるかどうかに応じて、条件付きで FileUpdate タスクに余分な属性を追加する方法が必要です。

4

2 に答える 2

1

MSBuild タスクの出力を CreateItem タスクのソースとして使用できます。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <ProjectReferences Include="*.*proj" />
    </ItemGroup>

    <Target Name="BuildMyProjects">
        <MSBuild
            Projects="@(ProjectReferences)"
            Targets="Build">
            <Output
                TaskParameter="TargetOutputs"
                ItemName="AssembliesBuiltByChildProjects" />
        </MSBuild>
    </Target>

    <Target Name="AddConfigMetadata" DependsOnTargets="BuildMyProjects">
        <CreateItem
            Include="@(AssembliesBuiltByChildProjects)"
            AdditionalMetadata="config-file=%(Identity).config">
            <Output
                TaskParameter="Include"
                ItemName="MySourceItemsWithMetadata" />
        </CreateItem>
    </Target>

    <Target Name="WhatEverYouLikeToDo" DependsOnTargets="AddConfigMetadata">
        <Message Text="%(MySourceItemsWithMetadata.config-file)" />
    </Target>

</Project>
于 2010-04-12T10:55:56.150 に答える
0

あなたの問題の説明は私にははっきりしていませんが、プロジェクトをテストする前に最初にビルドする必要があるため、.Tests.dll は常に利用可能である必要があります。プロジェクトをビルドしたら、いつでも CreateItem タスクを実行できます。CreateItem は .dll を取得するための優れた方法ですが、条件は必要ありません。

したがって、ビルド ファイルには次のようなものが必要です。 - Build project/solution -> .dll が作成されます。 - CreateItem を実行します。

この awnser を使用して、テストを自動化しようとしていると思いますか?

于 2010-04-11T13:23:38.207 に答える