Как создать пользовательские MSTest Assert-методы с "правильным" callstack
Я пишу методы расширения для тестирования значений для моего модульного теста. Наивный пример:--3-->
public static void ShouldBeTrue(this bool value)
{
if(!value)
{
throw new AssertFailedException("Expected true");
}
}
и используя его в тест:
someBool.ShouldBeTrue();
все работает, за исключением того, что строка, выбрасывающая исключение, будет той, на которой я заканчиваю при двойном щелчке по неудачному тесту в окне результатов теста, а в деталях результата теста строка броска отображается в трассировке стека ошибок.
есть ли способ обойти это, так что "someBool.ShouldBeTrue ();":
- открывается ли строка, дважды щелкнув по провальному тесту в окне результатов теста?
- это единственная строка в трассировке стека?
2 ответов
кажется, я нашел ответ. Все, что вам нужно сделать, это поместить пользовательские классы/методы утверждений в отдельную сборку. Вы можете иметь это как отдельный проект в том же решении, если хотите.
для этого уже написана библиотека классов: http://geekswithblogs.net/sdorman/archive/2009/01/31/adding-custom-assertions-to-mstest.aspx
есть цитата из ссылки выше:
... Для справки, эти недоступные утверждения:
- Assert.IsNaN
- Assert.IsEmpty
- Assert.IsNotEmpty
- Assert.Больше
- Assert.GreaterOrEqual
- Assert.Меньше
- Assert.LessOrEqual
- Assert.IsAssignableFrom
- Assert.IsNotAssignableFrom
- CollectionAssert.IsEmpty
- CollectionAssert.IsNotEmpty
- StringAssert.AreEqualIgnoringCase
- StringAssert.IsMatch
- FileAssert.AreEqual
- FileAssert.AreNotEqual
...Я создали библиотеку классов, которая включает в себя все из них, кроме методов FileAssert и StringAssert.Выполняется. ... Вы можете загрузить класс из моей общей папки SkyDrive:https://skydrive.live.com/?cid=93d618d639ec9651&id=93D618D639EC9651%211283