如何在TeamCity NUnit运行器中获取当前的TestContext

时间:2013-04-25 17:51:35

标签: nunit teamcity

在NUnit中,可以使用NUnit.Framework.TestContext.CurrentContext获取当前测试。当我在本地计算机上运行测试时,在测试期间正确填充了这些测试。但是,当推送到运行TeamCity的开发服务器时,此数据结构会出现一些导致错误的问题。访问context.Test.FullNamecontext.Test.Namecontext.Result时会出现这些错误。例如,使用以下代码:

var name = NUnit.Framework.TestContext.CurrentContext.Test.Name;

发生此异常,但仅当TeamCity正在运行测试时:

TearDown method failed. TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
--TearDown
   at NUnit.Framework.TestContext.TestAdapter.get_Name()

TeamCity是不填充TestContext还是有正确的方法来获取此数据?

1 个答案:

答案 0 :(得分:1)

最佳猜测:这是不可能的,因为TeamCity没有填充TestContext数据结构。它也不可能,因为NUnit中的制定者不公开。要使此功能起作用,可能需要修改NUnit。

为了解决这个限制,我们编写了自己的测试运行器,其中包含一个自定义数据结构来指示测试失败(这是其主要目的)。