Как создавать пользовательские MSTest Assert-методы с "правильным" callstack - PullRequest
8 голосов
/ 18 ноября 2010

Я пишу методы расширения для тестирования значений для моего модульного теста.Наивным примером будет:

public static void ShouldBeTrue(this bool value)
{
    if(!value)
    {
        throw new AssertFailedException("Expected true");
    }
}

И использование его в тесте:

someBool.ShouldBeTrue();

Все работает, за исключением того, что строка, выдающая исключение, будет той, на которой я остановлюсь, когдадважды щелкнув по неудавшемуся тесту в окне «Результаты теста», и в «Подробных результатах теста» в строке трассировки стека отображается строка броска.; ":

  1. - это строка, в которой дважды щелкает неудачный тест в окне результатов теста?
  2. - это единственная строка в трассировке стека?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Для этого уже написана библиотека классов: http://geekswithblogs.net/sdorman/archive/2009/01/31/adding-custom-assertions-to-mstest.aspx

Есть цитата по ссылке выше:

... Для справки, эти недоступные утверждения:

  • Assert.IsNaN
  • Assert.IsEmpty
  • Assert.IsNotEmpty
  • Assert.Greater
  • Assert.GreaterOrEqual
  • Assert.Less
  • Assert.LessOrEqual
  • Assert.IsAssignableFrom
  • Assert.IsNotAssignableFrom
  • CollectionAssert.IsEmpty
  • CollectionAssertIsNotEmpty
  • StringAssert.AreEqualIgnoringCase
  • StringAssert.IsMatch
  • FileAssert.AreEqual
  • FileAssert.AreNotEqual
* 1040 ... Iсоздали библиотеку классов, которая включает все из них, кроме методов FileAssert и StringAssert.IsMatch.... Вы можете скачать класс из моей общей папки SkyDrive:
https://skydrive.live.com/?cid=93d618d639ec9651&id=93D618D639EC9651%211283
1 голос
/ 02 февраля 2011

Я думаю, что нашел ответ.Все, что вам нужно сделать, это поместить ваши собственные классы / методы утверждений в отдельную сборку.Вы можете иметь это как отдельный проект в том же решении, если хотите.

...