Cách lấy tên kiểm tra đơn vị từ thử nghiệm đơn vị bên trong?Làm cách nào để lấy tên phương thức thử nghiệm đơn vị khi chạy trong thử nghiệm đơn vị?
tôi có phương pháp dưới đây bên trong một lớp BaseTestFixture:
public string GetCallerMethodName()
{
var stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase methodBase = stackFrame.GetMethod();
return methodBase.Name;
}
My class Test Lịch thi đấu được thừa hưởng từ cơ sở một:
[TestFixture]
public class WhenRegisteringUser : BaseTestFixture
{
}
và tôi có kiểm tra hệ thống dưới đây:
[Test]
public void ShouldRegisterThenVerifyEmailThenSignInSuccessfully_WithValidUsersAndSites()
{
string testMethodName = this.GetCallerMethodName();
//
}
Khi tôi chạy điều này từ bên trong Visual Studio, nó trả về tên phương thức thử nghiệm của tôi như mong đợi.
Khi điều này được điều hành bởi TeamCity, thay vào đó, _InvokeMethodFast()
được trả về mà có vẻ là phương pháp mà TeamCity tạo ra khi chạy theo thời gian sử dụng riêng.
Vậy làm cách nào tôi có thể lấy tên phương thức thử nghiệm khi chạy?
Được biên dịch ở chế độ phát hành ngay cả khi được khởi chạy từ VS phải không? –
Bạn có nhận được thông tin lắp ráp cho mỗi phương pháp được gọi trong ngăn xếp không? Có lẽ bạn có thể đi lên ngăn xếp tìm kiếm lắp ráp thử nghiệm của bạn. –
Một stacktrace sẽ giúp đỡ, để xem nếu tên phương pháp thực tế được liệt kê xa hơn ngăn xếp cuộc gọi. –