在NUnit中,可以使用NUnit.Framework.TestContext.CurrentContext
获取当前测试。当我在本地计算机上运行测试时,在测试期间正确填充了这些测试。但是,当推送到运行TeamCity的开发服务器时,此数据结构会出现一些导致错误的问题。访问context.Test.FullName
,context.Test.Name
和context.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
还是有正确的方法来获取此数据?
答案 0 :(得分:1)
最佳猜测:这是不可能的,因为TeamCity没有填充TestContext数据结构。它也不可能,因为NUnit中的制定者不公开。要使此功能起作用,可能需要修改NUnit。
为了解决这个限制,我们编写了自己的测试运行器,其中包含一个自定义数据结构来指示测试失败(这是其主要目的)。