2012-12-28 57 views
2

我正在嘗試安裝CI服務器(TeamCity 7),並針對Windows商店應用程序對其執行每日構建和吸菸測試。煙霧測試應該啓動應用程序,等待5秒鐘後退出。單元測試Windows商店應用程序 - MSBuild,MSTest和TeamCity

我創建了編譯代碼的MSBuild腳本(在觀看關於持續集成的Pluralsight課程之後)。在我的解決方案中,第一個項目是空白Windows商店應用程序,第二個是測試(單元測試庫(Windows商店應用程序) - 如http://msdn.microsoft.com/en-us/library/vstudio/hh440545.aspx所述)。

但我找不到: A)如何從測試方法啓動空白應用程序? B)如何從msbuild腳本和TeamCity服務器本地運行測試。

在Windows 8桌面上使用VS 2012 Premium。

這是當前的腳本:

<?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。

回答