Автоволшебные модульные тесты на поддержку Метода объекта сокращаются в Java?

Понятно и просто, вам просто нужно установить какой-нибудь флаг для последних v-if:

{{ item.name }}
Child component

Здесь используется $set(), потому что у начального item может отсутствовать поле shown, поэтому установите его непосредственно с item.shown=true не будет реагировать.

Вы также можете скрыть кнопку после щелчка:


Чтобы переключить видимость , вам просто нужно сделать это так:


JSFiddle

10
задан VonC 10 October 2008 в 14:57
поделиться

7 ответов

    public static void checkObjectIdentity(Object a1, Object a2, Object b1) {
        assertEquals(a1, a2);
        assertEquals(a2, a1);
        assertNotSame(a1, a2);
        assertEquals(a1.hashCode(), a2.hashCode());
        assertFalse(a1.equals(b1));
        assertFalse(a2.equals(b1));
        assertFalse(b1.equals(a1));
        assertFalse(b1.equals(a2));
    }

Использование:

        checkObjectIdentity(new Integer(3), new Integer(3), new Integer(4));

Ни о чем не может думать лучше. Добавьте новые вызовы к checkObjectIdentity при нахождении ошибки.

2
ответ дан 4 December 2019 в 04:21
поделиться

Я думаю VonC на правильном пути, но я даже согласился бы на что-то менее сложное, такое как параметризованный тест, который берет в объекте .class (на который Методы объекта тестируются), сопровождаемый переменным числом конструктора args. Затем необходимо было бы использовать отражение для нахождения конструктора, который соответствует типам для переданного - в аргументах, и вызовите конструктора. Этот тест предположил бы, что параметры, передаваемые в него, создадут допустимый экземпляр объекта.

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

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

0
ответ дан 4 December 2019 в 04:21
поделиться

[общественное сообщение здесь, никакая карма не включена ;)]

Вот другая проблема кода для Вас:

Один класс Java, реализовывая тестовый сценарий JUnit, с основным методом, который в состоянии запустить JUnit на себе!

Этот класс будет также:

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

Метод тестирования берет параметр имени класса (здесь: это будет себя), проверьте, имеет ли класс с тем именем равняние () переопределенный метод с "интересными значениями" аннотации.
Если это сделает, то это будет создавать соответствующие экземпляры (себя) на основе аннотаций, и тест равняется ()

Это - автономный тестовый класс, который определяет механизм, который в состоянии быть обобщенным к любому классу с переопределенным аннотируемым, равняется () функции.

Используйте JDK6 и JUnit4.4

Тот класс должен быть скопированной вставкой в соответствующем пакете пустого проекта Java... и просто работать ;)


Для добавления еще некоторой мысли, в ответ на Nicolas (см. комментарии):

  • да данные, необходимые для теста, в кандидате класса, чтобы быть протестированными (то есть, переопределение того равняется и помогающий любому 'автоматическому тестеру' для создания соответствующих экземпляров),
  • Я не вижу, что точно как "тестирование логики", но как полезные комментарии, что, как предполагается, делает равняние (и случайно как данные, которые будут использованы вышеупомянутым тестером ;))

Должны аннотации, представляющие потенциальные данные тестирования никогда не быть в самом классе?... Эй это могло быть большим вопросом спросить :)

0
ответ дан 4 December 2019 в 04:21
поделиться

Просто начальные мысли немного о том вопросе (который может объяснить, почему нет все еще никакого ответа после целого часа!?;)

Кажется, существует две части когда дело доходит до реализации решение вопроса:

1/получают каждый мои собственные классы. Легкий, Вы даете имя банки, метод инициализации теста Junit был бы:

  • проверьте, находится ли та банка в пути к классу выполнения JUnit
  • считайте и загрузите каждый классы в нем
  • запоминает только тех, для которых равняется (), и хеш () был объявлен и переопределен (посредством Отражения)

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

Это означает, являются ли Ваши конструкторы взятыми аргументами, необходимо рассмотреть,

  • для аргументов типов примитивов (интервал, булевская переменная, плавание...) или Строка, каждый комбинации предельных значений (для Строки, "xxx", "", пустой указатель; интервал fonr, 0,-x, +x, - Целое число. МИН, +Integer. МАКС... и так далее)
  • для нетипов примитивов создайте экземпляр из тех, чтобы быть переданными конструктору объекта протестировать (значение, что рекурсивно необходимо рассмотреть параметры конструктора того параметра: типы примитивов или не)

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

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


Чтобы избежать проблемы комбинаций и сохранить тест, соответствующее тестирование оценивает близко к самому фактическому коду, я рекомендовал бы определение специализированной аннотации со Строкой, представляющей допустимые значения для конструкторов. Там был бы расположен прямо выше равняния () переопределенный метод одного из Вашего объекта.

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

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

  • некоторые аннотации, как описано выше (если нет только доступный конструктор по умолчанию),
  • соответствующий хеш () метод, также переопределенный (в противном случае, если выдал бы утверждать исключение и сбой на том классе),
1
ответ дан 4 December 2019 в 04:21
поделиться

Эта проблема не имеет "легкого" решения, если Вы не помещаете сильные ограничения на свои классы.

Например, если Вы используете несколько конструкторов для данного класса, как можно удостовериться, что все параметры хорошо приняты во внимание в Вашем, равняется/хеширует методам? Как насчет значений значений по умолчанию? Это вещи, которые, к сожалению, не могут быть автоматизированы вслепую.

0
ответ дан 4 December 2019 в 04:21
поделиться

Возможно, я неправильно понимаю вопрос (и также CS), но он не походит на проблему, которую Вы описываете, разрешимо в общем случае.

Другими словами, единственный способ, которым модульный тест может уверить Вас, что метод переопределения работает то же над всеми исходными данными как переопределенный метод, состоял бы в том, чтобы попробовать его на всех исходных данных; в случае равняется, который означал бы все объектные состояния.

Я не уверен, обрежет ли какая-либо текущая среда тестирования автоматически вниз и абстрагирует возможности для Вас.

0
ответ дан 4 December 2019 в 04:21
поделиться

У меня есть первая грубая реализация, для равняется тестированию с Конструктором, использующим только примитивные параметры здесь. Просто вставка копии это в тесте. Файл MyClass.java и выполненный это.

Предупреждение: строки кода 1720 года (0 ошибок в findbugs, 0 в "измененном" checkstyle, цикломатической сложности под 10 для всех функций).

См. весь код в: автотест для равняется функции в классах Java через аннотации

0
ответ дан 4 December 2019 в 04:21
поделиться
Другие вопросы по тегам:

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