Как предупредить о провале теста от внешнего воздействия, используя MSTest / CCNet - PullRequest
0 голосов
/ 20 октября 2011

У нас есть раздел нашего онлайн-сервиса, который интегрируется со сторонним веб-сервисом.Таким образом, у нас есть большое количество модульных тестов, использующих MSTest в Visual Studio 2010, которые удостоверяются, что наши транзакции с третьей стороной приводят к ожидаемым ответам.Мы используем CCNet для непрерывных сборок, и было здорово делать именно то, для чего предназначена непрерывная интеграция.Во многих случаях он обнаруживал, когда проверки в вышестоящих слоях изменяли данные на нашем конце службы и нарушали интеграцию.

К сожалению, сторонний хост тестирования интеграции ненадежен в том смысле, что его можно отключить для обслуживания без предупреждения,Таким образом, есть несколько раз в день, когда сборка будет нарушена из-за сбоя этих модульных тестов из-за проблем с соединением.Это очень отвлекает, и мы ничего не можем с этим поделать, кроме как пометить это как приемлемый путь к результату.Поэтому многие наши тесты выглядят следующим образом:

var client = new ThirdPartyClient(TestConfig);
var Result = client.DoSomethingOverThere(ourDataToSend);
Assert.IsFalse(Result == BadResult)
Assert.IsTrue((Result == Success) || (Result == Timeout))

Мне бы очень хотелось узнать, какой из двух возможных результатов привел к прохождению теста.(На самом деле я хотел бы, чтобы был способ использовать Assert.Inconclusive без учета его как неработающей сборки) Но есть ли у кого-нибудь какие-либо рекомендации о том, как справиться с этой ситуацией?

1 Ответ

0 голосов
/ 20 октября 2011

Эта публикация, адресованная Неокончательные тесты в сборке TFS, не должны нарушать сборку объясняет обходной путь, который может быть применим в вашей ситуации. Я согласен с тем, что установка состояния Inconclusive для теста, когда у вашей другой стороны есть проблемы, является прагматичным способом решения этой проблемы.

...