Я не уверен, что в xUnit есть какой-то конкретный механизм c, чтобы помочь вам сделать это, но вы можете легко написать свой собственный помощник для этого.
using System.Diagnostics;
using System.Linq;
static class XUnitHelper
{
internal static string FactDisplayName()
{
var frame = new StackFrame(1, true);
var method = frame.GetMethod();
var attribute = method.GetCustomAttributes(typeof(Xunit.FactAttribute), true).First() as Xunit.FactAttribute;
return attribute.DisplayName;
}
}
Внутри вашего устройства тестовый метод, вызов XUnitHelper.FactDisplayName()
. Конечно, это не будет работать, если есть какое-либо вложение - например, если вы вызываете этот помощник в другом методе, который сам вызывается из метода модульного теста, оформленного Fact
. Для обработки подобного случая вам нужно написать более сложный код, проходящий через стек (фактически, именно поэтому 1
передается в конструктор StackFrame
; мы хотим пропустить информацию стека для сам вспомогательный метод).