Tôi đang sử dụng Microsoft WebTest và muốn có thể làm điều gì đó tương tự như số Assert.Fail()
của NUnit. Điều tốt nhất tôi đã đưa ra là throw new webTestException()
nhưng điều này hiển thị trong kết quả kiểm tra dưới dạng Error
thay vì Failure
.Làm cách nào để tôi có thể thất bại trong WebTest?
Ngoài phản ánh trên WebTest
để đặt biến thành viên riêng tư cho biết lỗi, có điều gì tôi đã bỏ lỡ không?
EDIT: Tôi cũng đã sử dụng phương pháp Assert.Fail()
, nhưng điều này vẫn hiển thị dưới dạng lỗi thay vì lỗi khi được sử dụng từ bên trong WebTest và thuộc tính Outcome
là chỉ đọc (không có công khai).
EDIT: bây giờ tôi thực sự bối rối. Tôi đã sử dụng phản chiếu để đặt thuộc tính Outcome
thành Không thành công nhưng thử nghiệm vẫn còn vượt qua!
Dưới đây là đoạn code mà đặt Oucome đến thất bại:
public static class WebTestExtensions
{
public static void Fail(this WebTest test)
{
var method = test.GetType().GetMethod("set_Outcome", BindingFlags.NonPublic | BindingFlags.Instance);
method.Invoke(test, new object[] {Outcome.Fail});
}
}
và đây là đoạn code mà tôi đang cố gắng để thất bại:
public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
this.Fail();
yield return new WebTestRequest("http://google.com");
}
Outcome
là nhận được thiết lập để Oucome.Fail
nhưng dường như các WebTest framework không thực sự sử dụng điều này để xác định kết quả kiểm tra/lỗi.
nên đã rõ ràng hơn ... Tôi đã có đã thử cả hai. (câu hỏi đã chỉnh sửa để phản ánh điều này) – craigb
[Microsoft.VisualStudio.QualityTools.WebTestFramework, Version = 9.0.0.0] Microsoft.VisualStudio.TestTools.WebTesting.WebTest.set_Outcome (Microsoft.VisualStudio.TestTools.WebTesting.Outcome value) là public –
Not theo dll tôi đang sử dụng. Oucome là một người bắt đầu công khai, nhưng không có công khai nào. Tôi đã sử dụng sự phản chiếu để cal set_Outcome (đó là riêng tư) nhưng nó vẫn không có hiệu lực trên kết quả kiểm tra (tức là nó cho đến khi không thất bại) – craigb