繁体   English   中英

单元测试Windows应用商店应用-MSBuild,MSTest和TeamCity

[英]Unit testing Windows store app - MSBuild, MSTest and TeamCity

我正在尝试设置CI服务器(TeamCity 7),并在Windows应用商店上对其进行日常构建和冒烟测试。 冒烟测试应仅启动应用程序,等待5秒钟然后退出。

我创建了用于编译代码的MSBuild脚本(在观看了有关持续集成的Pluralsight课程之后)。 在我的解决方案中,第一个项目是Blank Windows store应用程序,第二个项目是Tests(单元测试库(Windows Store应用程序))-如http://msdn.microsoft.com/zh-cn/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。

要启动您的appx,请查看以下代码@ http://social.msdn.microsoft.com/Forums/zh-CN/windowsgeneraldevelopmentissues/thread/a4d2fca1-4034-4cc7-a86a-6242ce1a8b16事实上,由于您没有与之互动,因此您的应用会在打开后几秒钟内变得不活动。

要运行Windows8存储单元测试,请使用vstest.console.exe而不是mstest.exe。 vstest.console.exe是VS2012中新的单元测试执行程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM