Тесты JUnit должны быть javadocced?

Что лучший способ состоит в том, чтобы представить hierachy в базе данных SQL? Универсальная, портативная техника?

Позволяют нам предположить, что hierachy главным образом читается, но не абсолютно статичен. Скажем, это - родословная.

Вот то, как не сделать это:

create table person (
person_id integer autoincrement primary key,
name      varchar(255) not null,
dob       date,
mother    integer,
father    integer
);

И вставка данных как это:

person_id   name      dob       mother father  
1           Pops      1900/1/1   null   null  
2           Grandma   1903/2/4   null   null  
3           Dad       1925/4/2   2      1  
4           Uncle Kev 1927/3/3   2      1
5           Cuz Dave  1953/7/8   null   4
6           Billy     1954/8/1   null   3

Вместо этого разделяет Ваши узлы и Ваши отношения в две таблицы.

create table person (
person_id integer autoincrement primary key,
name      varchar(255) not null,
dob       date
);

create table ancestor (
ancestor_id   integer,
descendant_id integer,
distance      integer
);

Данные создаются как это:

person_id   name      dob       
1           Pops      1900/1/1  
2           Grandma   1903/2/4   
3           Dad       1925/4/2   
4           Uncle Kev 1927/3/3
5           Cuz Dave  1953/7/8   
6           Billy     1954/8/1   

ancestor_id  descendant_id  distance
1            1              0
2            2              0
3            3              0
4            4              0
5            5              0
6            6              0
1            3              1
2            3              1
1            4              1
2            4              1
1            5              2
2            5              2
4            5              1
1            6              2
2            6              2
3            6              1

можно теперь выполнить запросы arbitary, которые не включают присоединение к таблице назад на себе, который произошел бы, если у Вас есть heirachy отношения в той же строке как узел.

, у Кого есть бабушка и дедушка?

select * from person where person_id in 
    (select descendant_id from ancestor where distance=2);

Все Ваши потомки:

select * from person where person_id in 
    (select descendant_id from ancestor 
    where ancestor_id=1 and distance>0);

, Кто дяди?

select decendant_id uncle from ancestor 
    where distance=1 and ancestor_id in 
    (select ancestor_id from ancestor 
        where distance=2 and not exists
        (select ancestor_id from ancestor 
        where distance=1 and ancestor_id=uncle)
    )

Вы избегаете всех проблем соединения таблицы к себе через подзапросы, общее ограничение является 16 subsuqeries.

Проблема, поддержание таблицы предка довольно трудно - лучше всего сделанный с хранимой процедурой.

15
задан Jim 26 November 2009 в 16:08
поделиться

9 ответов

Если цель теста очевидна, я не утруждаю себя документированием.

Если это неочевидно, потому что имеет дело с какой-то неясной ситуацией - или если я хочу сослаться на конкретная ошибка, например - в этот случай я добавлю документацию. Я не документирую выбросы исключений и т. Д. - просто краткое описание метода. Это случается сравнительно редко. Я, скорее всего, добавлю документацию для вспомогательных методов, используемых в нескольких тестах.

15
ответ дан 1 December 2019 в 01:38
поделиться

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

Я знаю, что в Ruby есть инструменты для создания документа из имени тестов, но я не видел ни одного из них в Java.

11
ответ дан 1 December 2019 в 01:38
поделиться

Независимо от того, javadoc или нет, я думаю, что модульные тесты обязательно должны быть задокументированы. В случаях, когда формальной спецификации не существует, модульные тесты - это то, что ближе всего к определению ожидаемого поведения кода. Документируя тестовые примеры, вы очень ясно дадите читателю понять, что тестирует тест и почему он тестируется.

3
ответ дан 1 December 2019 в 01:38
поделиться

Я думаю, что полезно составить javadoc условия, при которых тесты проходят.

1
ответ дан 1 December 2019 в 01:38
поделиться

Я не понимаю, почему вы должны рассматривать тестовые примеры иначе, чем ваш производственный код, в отношении комментариев.

1
ответ дан 1 December 2019 в 01:38
поделиться

Если рассматривать тесты как документацию, не имеет большого смысла «документировать документацию». Название каждого теста уже само по себе должно описывать, какова цель тестов - какое поведение задается этим тестом.

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

Например, взгляните на тестовые примеры в этом проекте . Делает ли кто-нибудь из них что-то, что не является явно очевидным, если посмотреть на название тестов и тестовый код?

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

2
ответ дан 1 December 2019 в 01:38
поделиться

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

1
ответ дан 1 December 2019 в 01:38
поделиться

черт возьми. даже если это просто ...

создать порядок, отредактировать порядок, сохранить, загрузить и проверить его.

если это действительно простой тест, то, возможно, и нет.

Я считаю, что по мере изменения кода иногда причина ибо тест уже не такой очевидный, как раньше.

0
ответ дан 1 December 2019 в 01:38
поделиться

Может быть, вы могли бы попросить кого-нибудь, кто не совсем знаком с вашим кодом, дать вам быстрый ответ относительно того, легко ли понять ваши тесты, как они есть.

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

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

Если тест немного сбивает с толку, мы можем соответствующим образом обновить название или документацию и получить более точную оценку того, что работает, а что нет.

0
ответ дан 1 December 2019 в 01:38
поделиться
Другие вопросы по тегам:

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