У нас есть раздел нашего онлайн-сервиса, который интегрируется со сторонним веб-сервисом.Таким образом, у нас есть большое количество модульных тестов, использующих 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 без учета его как неработающей сборки) Но есть ли у кого-нибудь какие-либо рекомендации о том, как справиться с этой ситуацией?