Посоветуйте .Net фреймворк для интеграционного тестирования способный stub-ить R
От: EM Великобритания  
Дата: 11.11.14 12:30
Оценка:
Hi all,

Стоит задача обложить тестами существующее приложение активно общающееся с окружающим миром по REST и SOAP.
Соответственно, очень хотелось бы найти уже написанный Http server который стартует из теста, вешается на свободный порт и на каждый четкий запрос отдавал бы заготовленный Mock ответ

Очевидно что для поддержки REST и SOAP он должен уметь мокать по Url, query params, Http verb, POST body

И нужно чтобы это чудо было дотнетное или имело .Net клиента
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Re: Посоветуйте .Net фреймворк для интеграционного тестирования способный stub-и
От: Sharov Россия  
Дата: 11.11.14 15:58
Оценка: 4 (1)
Здравствуйте, EM, Вы писали:

EM>Hi all,


EM>Стоит задача обложить тестами существующее приложение активно общающееся с окружающим миром по REST и SOAP.

EM>Соответственно, очень хотелось бы найти уже написанный Http server который стартует из теста, вешается на свободный порт и на каждый четкий запрос отдавал бы заготовленный Mock ответ

EM>Очевидно что для поддержки REST и SOAP он должен уметь мокать по Url, query params, Http verb, POST body


Посмотрите на это -- http://www.soapui.org/
Есть вроде бесплатная версия с урезанной функциональностью.

EM>И нужно чтобы это чудо было дотнетное или имело .Net клиента


Это требование не совсем понятно...
Кодом людям нужно помогать!
Re[2]: Посоветуйте .Net фреймворк для интеграционного тестирования способный stu
От: EM Великобритания  
Дата: 11.11.14 17:02
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, EM, Вы писали:


EM>>Hi all,


EM>>Стоит задача обложить тестами существующее приложение активно общающееся с окружающим миром по REST и SOAP.

EM>>Соответственно, очень хотелось бы найти уже написанный Http server который стартует из теста, вешается на свободный порт и на каждый четкий запрос отдавал бы заготовленный Mock ответ

EM>>Очевидно что для поддержки REST и SOAP он должен уметь мокать по Url, query params, Http verb, POST body


S>Посмотрите на это -- http://www.soapui.org/

S>Есть вроде бесплатная версия с урезанной функциональностью.

Вот этого хотелось бы избежать.
Она слишком навороченная и трудоемкая в смысле встраивания в .Net ный CI. Как минимум там придется парсить output от ее тестов
Мне нужно в принципе 2 метода — Mock и Assert

подошло бы вот это
https://github.com/hibri/HttpMock
но там нет SOAP

EM>>И нужно чтобы это чудо было дотнетное или имело .Net клиента


S>Это требование не совсем понятно...


В /Net ном проекте хотелосб бы тесты тоже написать на дотнете
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Re: Посоветуйте .Net фреймворк для интеграционного тестирования способный stub-и
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 12.11.14 08:01
Оценка:
Здравствуйте, EM, Вы писали:

EM>Стоит задача обложить тестами существующее приложение активно общающееся с окружающим миром по REST и SOAP.


Мне какжется, разработать простейший WCF сервис будет не на много сложнее, чем использовать некий Mock-механизм (ну разве что ответы у вас уже в виде готовых сериализованных текстов). Ведь даже при использование какого-то фреймворка вы вынуждены будете как-то описывать варианты запросов/ответов. Так сделайте это просто кодом и дело с концом.

На крайний случай, если вам нравится нотация какого-нибудь Mock-фреймворка, в можете поступить примерно так (я использовал Moq):

using Moq;
using System;
using System.ServiceModel;
using System.ServiceModel.Description;

namespace MockWcf
{
    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        int GetData();

        [OperationContract]
        int GetData2(int a);
    };

    [ServiceBehavior(InstanceContextMode= InstanceContextMode.Single)]
    public abstract class Service : IService
    {
        public abstract int GetData();
        public abstract int GetData2(int a);
    }


    class Program
    {
        static void Main(string[] args)
        {
            var serviceMock = new Mock<Service>();

            serviceMock.Setup(m => m.GetData()).Returns(1);
            
            serviceMock.Setup(m => m.GetData2(It.IsInRange(0, 10, Range.Inclusive))).Returns(3);
            serviceMock.Setup(m => m.GetData2(It.IsInRange(11, 100, Range.Inclusive))).Returns(7);

            var host = new ServiceHost(serviceMock.Object, new Uri("http://localhost/MockWcf"));

            host.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = true });
            host.AddServiceEndpoint("MockWcf.IService", new BasicHttpBinding(), "Service");

            host.Open();
            Console.ReadLine();
            host.Close();

        }
    }
}


Понмаю, что не хочется возиться с инфраструктурой, но, имхо, её здесь будет совсем немного.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.