Генерация классов автоматически от модульных тестов?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

19
задан Sklivvz 1 April 2012 в 22:23
поделиться

8 ответов

Это выполнимо - по крайней мере, в теории. То, что я сделал бы, использовать что-то как csparser для парсинга модульного теста (Вы не можете скомпилировать его, к сожалению), и затем возьмите его оттуда. Единственная проблема, которую я вижу, состоит в том, что то, что Вы делаете, неправильно с точки зрения методологии - имеет больше смысла генерировать модульные тесты от классов объекта (действительно, Visual Studio делает точно это), чем выполнение его наоборот.

1
ответ дан 30 November 2019 в 05:23
поделиться

Если бы Вы планируете записать свою собственную реализацию, я определенно предложил бы, чтобы Вы смотрели на NVelocity (C#) или Скорость (Java) движки шаблонов.

я использовал их в генераторе кода прежде и нашел, что они делают задание намного легче.

1
ответ дан 30 November 2019 в 05:23
поделиться

Его удивительное, как никто действительно ничего не дал к тому, что Вы спрашивали.

я не знаю ответ, но я дам свои мысли о нем.

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

Теперь ни в коем случае не делают я даже знаю, как сделать это, поскольку я ничего никогда не создавал для resharper, но именно это я попытался бы сделать. Это имеет логический смысл, что это могло быть сделано.

И если Вы действительно описываете некоторый код, отправьте его, поскольку я мог найти это полезным также, способность генерировать весь скелет за один шаг. Очень полезный.

3
ответ дан 30 November 2019 в 05:23
поделиться

Мне нравится CodeRush от DevExpress. У них есть огромный настраиваемый механизм шаблонной обработки. И лучшими для меня их не являются никакие Диалоговые окна. У них также есть функциональность для создания методов и интерфейсов и классов от интерфейса, который не существует.

0
ответ дан 30 November 2019 в 05:23
поделиться

Visual Studio поставлется с некоторыми функциями, которые могут быть полезными для Вас здесь:

Генерируют Тупик Метода . Когда Вы пишете вызов в метод, который не существует, Вы получите немного умного тега на имени метода, которое можно использовать для генерации тупика метода на основе параметров, Вы являетесь передающими.

, Если Вы - человек клавиатуры (я), затем прямо после ввода близкой круглой скобки, можно сделать:

  • Ctrl-. (для открытия умного тега)
  • ВХОДЯТ (для генерации тупика)
  • F12 (перейдите к определению, для взятия Вас к новому методу)

умный тег только появляется, если IDE думает, что нет метода, который соответствует. Если Вы хотите генерировать, когда умный тег не, можно перейти в [1 119] Редактирование->, Intellisense-> Генерируют Тупик Метода .

Отрывки . Маленькие шаблоны кода, который помогает генерировать биты общего кода. Некоторые просты (попытка "если [ВКЛАДКА] [ВКЛАДКА]"). Некоторые сложны ('переключатель' генерирует случаи для перечисления). Можно также записать собственное. Для Вашего случая попробуйте "класс" и "опору".

Видят также" , Как изменить Метод “Generate Stub” для броска NotImplementedException в VS? " для информационных отрывков в контексте GMS.

автоопоры . Помните, что свойства могут быть намного более простыми:

public string Name { get; set; }

создают класс . В Проводнике Решения, RClick на названии проекта или подпапке, выбор Добавляет-> Класс . Введите имя своего нового класса. Хит ВХОДИТ . Вы получите объявление класса в правильном пространстве имен, и т.д.

интерфейс Implement . Когда Вы захотите, чтобы класс реализовал интерфейс, запишите часть имени интерфейса, активируйте умный тег и выберите любую опцию генерировать тупики для интерфейсных участников.

Это не вполне 100%-е автоматическое решение, которое Вы ищете, но я думаю, что это - хорошее смягчение.

-1
ответ дан 30 November 2019 в 05:23
поделиться

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

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

BTW, Вы могли бы хотеть взглянуть на NBehave?

-2
ответ дан 30 November 2019 в 05:23
поделиться

Я использую Насмешки Носорога для этого, когда мне просто нужен простой тупик.

http://www.ayende.com/wiki/Rhino+Mocks+-+Stubs.ashx

-2
ответ дан 30 November 2019 в 05:23
поделиться

Попробуйте изучить Pex, проект Microsoft по модульному тестированию, который все еще исследуется

research.microsoft.com/en-us/projects/Pex/

0
ответ дан 30 November 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: