Генерация классов автоматически из модульных тестов? - PullRequest
19 голосов
/ 18 сентября 2008

Я ищу инструмент, который может пройти модульный тест, например

IPerson p = new Person();
p.Name = "Sklivvz";
Assert.AreEqual("Sklivvz", p.Name);

и автоматически сгенерировать соответствующий класс заглушки и интерфейс

interface IPerson         // inferred from IPerson p = new Person();
{
    string Name 
    { 
        get;              // inferred from Assert.AreEqual("Sklivvz", p.Name);
        set;              // inferred from p.Name = "Sklivvz";
    }
}

class Person: IPerson     // inferred from IPerson p = new Person();
{
    private string name;  // inferred from p.Name = "Sklivvz";

    public string Name    // inferred from p.Name = "Sklivvz";
    {
        get
        {
            return name;  // inferred from Assert.AreEqual("Sklivvz", p.Name);
        }
        set
        {
            name = value; // inferred from p.Name = "Sklivvz";
        }
    }

    public Person()       // inferred from IPerson p = new Person();
    {
    }
}

Я знаю, что ReSharper и Visual Studio делают некоторые из них, но мне нужен полный инструмент - командная строка или еще много чего - который автоматически определяет, что нужно сделать. Если такого инструмента нет, как бы вы его написали (например, расширение ReSharper, с нуля, с использованием каких библиотек)?

Ответы [ 11 ]

0 голосов
/ 18 сентября 2008

Я обнаружил, что всякий раз, когда мне нужен такой инструмент для генерации кода, я, вероятно, пишу код, который можно сделать более общим, поэтому мне нужно написать его только один раз. В вашем примере эти методы получения и установки, кажется, не добавляют никакого значения к коду - на самом деле, это просто утверждение о том, что механизм получения / установки в C # работает.

Я бы воздержался от написания (или даже использования) такого инструмента, прежде чем понять, каковы мотивы написания таких тестов.

Кстати, вы можете взглянуть на NBehave ?

...