使用NUnit-2.5 RequiresSTAAttribute与TeamCity的4

使用TeamCity的,我想获得一个(TestAutomationFX)检验标准,要求STA线程来运行。

它的工作原理通过自定义的app.config的配置NUnit的2.4.x的(8)(如提到了Gishu,感谢,说明在http://madcoderspeak.blogspot.com/2008/12/getting-nunit-to-go-全sta.html)

它的工作原理通过:

/// <summary> /// Via Peter Provost / http://www.hedgate.net/articles/2007/01/08/instantiating-a-wpf-control-from-an-nunit-test/ /// </summary> public static class CrossThreadTestRunner // To be replaced with (RequiresSTA) from NUnit 2.5 { public static void RunInSTA(Action userDelegate) { Exception lastException = null; Thread thread = new Thread(delegate() { try { userDelegate(); } catch (Exception e) { lastException = e; } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); if (lastException != null) ThrowExceptionPreservingStack(lastException); } [ReflectionPermission(SecurityAction.Demand)] static void ThrowExceptionPreservingStack(Exception exception) { FieldInfo remoteStackTraceString = typeof(Exception).GetField( "_remoteStackTraceString", BindingFlags.Instance | BindingFlags.NonPublic); remoteStackTraceString.SetValue(exception, exception.StackTrace + Environment.NewLine); throw exception; } }

我希望能使用一些内置的。因此NUnit的2.5.0.8322(Beta 1中)的RequiresSTAAttribute似乎理想。 它的工作原理独立的,但不是通过TeamCity的,甚至当我试图通过强制的问题:

<NUnit Assemblies="Test\bin\$(Configuration)\Test.exe" NUnitVersion="NUnit-2.5.0" />

该文档说了亚军支持2.5.0阿尔法4? (http://www.jetbrains.net/confluence/display/TCD4/NUnit+for+MSBuild)

也许回答我的问题,2.5.0 APLHA 4可是没有RequiresSTAAttribute,因此,亚军是不尊重我的属性...

--------------解决方案-------------

TeamCity的4.0.1包含NUnit的2.5.0测试版2。我认为,应该为这种情况。

你可以看到,如果这会有所帮助? 通过config文件的方式设定STA ......在预NUnit的2.5

http://madcoderspeak.blogspot.com/2008/12/getting-nunit-to-go-all-sta.html

现在,我使用的是:

private void ForceSTAIfNecessary(ThreadStart threadStart)
{
if (Thread.CurrentThread.GetApartmentState() == ApartmentState.STA)
threadStart();
else
CrossThreadTestRunner.RunInSTA(threadStart);
}

[Test]
public void TestRunApp()
{
ForceSTAIfNecessary(TestRunAppSTA);
}

public void TestRunAppSTA()
{
Assert.That(Thread.CurrentThread.GetApartmentState(), Is.EqualTo(ApartmentState.STA));
...
}

代替:

[RequiresSTA]
public void TestRunAppSTA()
{
Assert.That(Thread.CurrentThread.GetApartmentState(), Is.EqualTo(ApartmentState.STA));
...
}

分类:的MSBuild 时间:2012-01-01 人气:0
分享到:

相关文章

  • TeamCity的NUnit测试结果的可视化 2012-02-01

    有没有办法从内部的TeamCity的"测试"选项卡产生的NUnit的测试的视觉效果,目前我的恶性脚本输出使用下面的任务结果的.xml文件: <nunit2 haltonfailure="false" failonerror="false" verbose="true"> <formatter type="Xml" extension=".xml" outputdir=&

  • TeamCity的NUnit的整合失败 - 始终得到“无法定位程序集nunit.framework-”! 2013-08-08

    我试图让TeamCity的运行是建立在一个恶性脚本如下NUnit的测试: <nunit2> <formatter type="Xml" usefile="true" extension=".xml" outputdir="${BuildArea.ReportsDir}" /> <test assemblyname="${BuildArea.OutputDir}\Common.Tests.

  • SpecFlow +华廷+ NUnit的+ TeamCity的在Windows Server 2008 R2 2014-01-01

    我刚刚遇到了一些麻烦建立一个完全自动化的每晚编译/测试/部署环境. 为了解释在短期设置. 我们使用水银作为源代码控制系统和作为的TeamCity构建服务器. 目前,它只有一个单独的机器上的一个生成代理让事情变得简单. 这个想法是如下:一TeamCity的构建运行每个夜晚. 从拉Mercurial库最新的,运行构建,运行单元测试,部署到测试服务器,运行验收测试(上生成代理)对刚部署的测试服务器,并在所有的传递部署很多临时服务器. 我就拥有了一切,除了验收测试工作. 这些与SpecFlow和华廷完成

  • BackgroundWorker的不工作TeamCity的NUnit的亚军 2014-01-04

    我使用NUnit在WPF 3.5应用程序来测试视图模型,我使用BackgroundWorker类是运行良好的NUnit的亚军或ReSharper的亚军执行异步commands.The单元测试,但失败的TeamCity 5.1服务器上. 它是如何实现的: 我使用ViewModel命名属性IsBusy并将其设置为false BackgroundWorker.RunWorkerCompleted事件. 在我的测试我使用这个方法来等待的BackgroundWorker完成: protected void

  • TeamCity的,从命令行调用TeamCity的NUnit的启动 2014-01-13

    我试图分裂跨越与TeamCity的多个生成代理一些相当长的单元测试执行,所以我删除了构建步骤的单元测试部分(使用Visual Studio 2008,sln2008构建亚军)在TeamCity的,并试图建立独立的编译脚步. 不过,我无法调用内置NUnit的发射器附带的TeamCity. 从代理的系统属性页,我有这样的: teamcity.dotnet.nunitlauncher C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.B

  • 为什么测试需要更长的时间来运行的TeamCity当NUnit的直接运行比? 2014-01-13

    我有一些C#的性能测试,基本上运行两个不同的方法和检查一个运行速度比其他的快很多. 当我在NUnit的本地运行,其中一个测试运行十倍的速度是其他的,所以我有一个使用NUnit测试Stopwatch来检查它至少快两倍(在回归的情况下). 但是当我运行TeamCity的测试,快速的方法是仅约1.5倍的速度慢吗? 我希望硬件差异有一定效果,但没有这么多. 可能是什么原因? --------------解决方案------------- 要回答我的问题,这个问题竟然是代码覆盖率已开启的测试版本在Team

  • 在TeamCity的6.5.X运行NUnit的测试与NUnit的加载项 2014-01-15

    我们正在使用的TeamCity 6.5.1我们建立管理编译,测试和部署. 到现在为止,我们一直使用NUnit的从TeamCity的构建亚军与NUnit的2.5.8运行我们的测试,并取得了巨大成功. http://confluence.jetbrains.com/display/TCD65/NUnit 我们所有的测试都是使用Visual Studio 2010测试项目被编译成我们通过TeamCity的接口引用一个汇编语言编写的C#和.NET 4.0. 现在,我们正在增加在需要是我们开发的扩展本机N

  • 配置TeamCity的+ NUnit的单元测试,这样可以正确地加载文件 2014-01-17

    概括地说,我有一个解决方案,在IDE中建立精细化,单元测试的所有(通过NUnitit VS2008插件)运行良好的NUnit的图形用户界面. 然而,当我执行我的TeamCity的构建亚军,需要文件访问(例如,用于运行针对特定的XML文件的测试),所有的单元测试,我只是得到System.IO.DirectoryNotFoundExceptions. 这样做的原因是显而易见的:它是寻找那些支持在错误的文件夹不同的单元测试,加载XML文件. 的方式我的单元测试的结构如下所示: +-- project

  • 在运行的TeamCity的NUnit测试时,错误的CurrentCulture 2014-06-07

    我有一个单元测试,它依赖于特定的文化. 在FixtureSetup,我都设置Thread.CurrentThread.CurrentCulture和Thread.CurrentThread.CurrentUICulture为需要的值(EN-US). 当我运行ReSharper的测试,它传递. 当我运行的TeamCity测试(使用亚军"NUnit的2.4.6"),测试失败,因为CurrentCulture是cs-CZ (我的操作系统的文化). 但是CurrentUICulture仍然是e

  • 获得TeamCity的运行NUnit的测试,既NCover和TypeMock整合? 2013-03-07

    基本上我想使用NUnit的插件的TeamCity(程序,不一定使用它的具体构建步骤)来运行我的单元测试,与NCover代码覆盖,而且由于我的单元测试使用TypeMock 6,我需要太加工. 到目前为止,我已经试过: 基本上只是指着TeamCity的NUnit的建设步我的dll的,但失败,出现以下错误信息: Typemock隔离器需要与覆盖工具挂运行,使执行下列操作之一: 通过Typemock隔离配置链接覆盖率工具 通过TMockRunner.exe -link运行测试 使用TypeMockSta

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.195 (s). 10 q(s)