CIサーバー(TeamCity 7)をセットアップし、Windowsストアアプリ用にデイリービルドとスモークテストを実行しようとしています。スモークテストはアプリを起動し、5秒間待ってから終了する必要があります。
コードをコンパイルするMSBuildスクリプトを作成しました(継続的インテグレーションに関するPluralsightのコースを見た後)。私のソリューションでは、最初のプロジェクトは空白のWindowsストアアプリで、2番目はテストです(ユニットテストライブラリ(Windowsストアアプリ)-http://msdn.microsoft.com/en-us/library/vstudio/hh440545.aspxで説明されています) 。
しかし、私は見つけることができません:A)テストメソッドから空のアプリを起動する方法は?B)msbuildスクリプトからローカルでTeamCityサーバー上でテストを実行する方法。
Windows8デスクトップでのVS2012Premiumの使用。
現在のスクリプトは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"
DefaultTargets="Compile" >
<UsingTask TaskName="MSBuild.ExtensionPack.Framework.AsyncExec"
AssemblyFile=".\Thirdparty\Tools\MSBuildAsyncExec\MSBuild.ExtensionPack.dll"/>
<UsingTask TaskName="RunAllTestsInSolution"
AssemblyFile=".\Thirdparty\Tools\MSBuildCustomTasks\RunAllTestsInSolution.dll"/>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
</PropertyGroup>
<ItemGroup>
<BuildArtifacts Include=".\buildartifacts\"/>
<SolutionFile Include=".\Decide Now.sln"/>
</ItemGroup>
<ItemGroup>
<!-- <MSTest Include=".\Thirdparty\Tools\MSTestFramework\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll"/>-->
<TestAssembly Include=".\buildartifacts\Tests\Tests.dll"/>
<TestResults Include=".\buildartifacts\TestResults.trx"/>
</ItemGroup>
<PropertyGroup >
<VisualStudioDir>C:\Program Files (x86)\Microsoft Visual Studio 11.0\</VisualStudioDir>
<MSTest>$(VisualStudioDir)Common7\IDE\MSTest.exe</MSTest>
</PropertyGroup>
<Target Name="Clean">
<RemoveDir Directories="@(BuildArtifacts)"/>
<!-- TODO: Clean bin, obj and AppPackage folders in Sources and Test-->
</Target>
<Target Name="Init" DependsOnTargets="Clean">
<MakeDir Directories="@(BuildArtifacts)"/>
</Target>
<Target Name="Compile" DependsOnTargets="Init">
<MSBuild Projects="@(SolutionFile)" Targets="Rebuild"
Properties="OutDir=%(BuildArtifacts.FullPath);Configuration=$(Configuration)"/>
</Target>
<Target Name="Test" DependsOnTargets="Compile">
<!-- IgnoreExitCode=”true” -->
<Exec Command='"$(MSTest)" /testcontainer:@(TestAssembly) /resultsfile:@(TestResults)'/>
<Message Text='##teamcity[importData type="mstest" path="@(TestResults)"]'/>
</Target>
</Project>
これがサンプルテストです
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
namespace Decide_Now{
[TestClass]
public class SmokeTest{
[TestMethod]
public void RunOnce(){
int x = 1;
int y = 2;
Assert.AreEqual( 3, x + y );
/*App.Start( null );
//var mainPage = new MainPage();
Task.Delay( 3000 ).Wait();
App.Current.Exit();*/
}
}
}
コメントでわかるように、私はいくつかの方法を試しましたが、次のように言う場合:
Test:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe"
/testcontainer:.\buildartifacts\Tests\Tests.dll /resultsfile:.\buildartifacts
\TestResults.trx
Microsoft (R) Test Execution Command Line Tool Version 11.0.50727.1
Copyright (c) Microsoft Corporation. All rights reserved.
Loading .\buildartifacts\Tests\Tests.dll...
Starting execution...
No tests to execute.
##teamcity[importData type="mstest" path=".\buildartifacts\TestResults.trx"]
SOS。