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

mji*_*son 5 teamcity nunit

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

var name = NUnit.Framework.TestContext.CurrentContext.Test.Name;
Run Code Online (Sandbox Code Playgroud)

发生此异常,但仅当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()
Run Code Online (Sandbox Code Playgroud)

TeamCity没有填充TestContext或者是否有正确的方法来获取此数据?

mji*_*son 1

最佳猜测:这是不可能的,因为 TeamCity 没有填充 TestContext 数据结构。也不能,因为 NUnit 中的 setter 不是公开的。为了使此功能发挥作用,NUnit 可能需要进行修改。

为了解决这个限制,我们使用自定义数据结构编写了自己的测试运行程序来指示测试失败(这是这样做的主要目的)。