Обзор разделов
0. Эта обзорная статья с
примером … 1. … Hello World
3. Объектно-ориентированное программирование — рефакторинг !
4. Пользовательский интерфейс — Swing !
5. Дополнительные функции игры
Идея разработки через тестирование ( TDD ) не нова, а также идея обучения через тестирование не нова (см. Также в Springer или здесь ).
Основная идея заключается в написании рабочих примеров кода на основе TDD для начинающих. Затем студенты должны иметь возможность кодировать (модульные) тесты и читать их с самого начала. Большинство людей выучили TDD спустя несколько лет после изучения «самого программирования», хотя я думаю, что TDD уже является частью любого кодирования. Большинство программистов «кодируют» + «тестируют» + «исправляют ошибки» + «тестируют» + и т. Д. Но с помощью TDD вы получаете преимущество, заключающееся в том, что ваши тесты могут выполняться позже автоматически и очень быстро, что гарантирует выполнение ранних требований
- даже если тот же программист забыл их или
- если несколько программистов работают над одним и тем же проектом одновременно или также
- если программист должен возобновить работу другого.
Я не буду здесь подробно рассказывать о TDD, но основные преимущества TDD:
- При правильном применении (= рано!) Вы можете часто кодировать быстрее с помощью TDD
- Более поздние рефакторинги намного быстрее и менее подвержены ошибкам (!!)
- Тестируемый код часто является «лучшим» кодом с точки зрения читабельности и повторного использования
- Вы косвенно документируете функциональность, и (модульные) тесты можно использовать как запрос функции или отчеты об ошибках.
«Реальный» цикл разработки TDD описан в Википедии . Мое субъективное предложение вам, мой читатель:
- думать и исходный код
- думать …
- проверить немного (написать тест)
- немного кодировать
- тест пройден?
- да => повторить с 2. (если все остальные тесты тоже пройдены)
- нет => найдите ошибку и повторите с 4. или 3.
На всех этапах может быть задействован рефакторинг .
Таким образом, в дополнение к объяснению, что представляют собой различные примитивные типы в Java, будут выполнены модульные тесты, подобные следующим:
@Test
public void testLongAndInteger() {
// an important difference of a long value to an integer value is the range:
int expectedInt = 2147483647;
// L indicates a long value
long expectedLong = 9223372036854775807L;
assertEquals( expectedInt, Integer.MAX_VALUE);
assertEquals(expectedLong, Long.MAX_VALUE);
// here is the problem what happens to an integer variable which
// exceeds its domain: increasing the maximal value will cause the
// variable to be negative!
int intVal = Integer.MAX_VALUE + 1;
assertTrue(intVal < 0);
}
Этот простой учебник не заменит старый добрый учебник по Java, например, JavaInsel (немецкий) или другой , но может использоваться параллельно. Жаль, что даже такие большие и великие книги не учат таким важным ручным инструментам, как TDD.
Другие важные этапы обучения должны быть задействованы при обучении языку программирования:
- Контроль версий (subversion, базар, ртуть, мерзавец,…)
- Обработка IDE (запуск, отладка, тестирование, рефакторинг , форматирование,…)
- Использование внешних библиотек или ссылки на списки ресурсов (например, этот )
Итак, как мы должны структурировать такой курс для начинающих, в котором участвует разработка, основанная на тестировании?
Как начинающий, я бы предпочел проект «реальной жизни». Мы должны разработать идею и реализовать ее во время обучения (с рефакторингом!). Это должна быть идея, которая не требует большого количества настроек или внешних ресурсов (таких как подключение к интернету, веб-приложение и т. Д.). И это должно быть либо полезно (например, как инструмент преобразования xml), игра или sth. это выглядит красиво .
В этом уроке мы реализуем простую игру с Swing в качестве графического пользовательского интерфейса ( GUI ), чтобы сделать его визуально более привлекательным, чем обычный вывод на консоль. Главы Swing-кода следует и можно пропустить при первом чтении. Хотя код пользовательского интерфейса можно протестировать (например, с помощью FEST ), этого не получится из-за нехватки времени на себя. Сама игра должна выглядеть это , но на самом деле не будет (опять — таки не хватает времени).
Если вы хотите нанять учебные курсы здесь, в Германии: напишите мне по электронной почте через peathal ät yahoo.de
Давайте начнем сейчас с первой части
Первая часть этого урока для начинающих — это обычный пример «Hello World», который не будет тестироваться. Эй, почему бы и нет? Потому что этот простой пример используется только для проверки работоспособности установки.
Что вы узнаете в этом разделе:
- Настройка простого Java-проекта
- IDE: запустить приложение
- Методы с параметрами
- для цикла
Читатель узнает, как настроить пример в выбранной им интегрированной среде разработки ( IDE ), собрать и запустить его. Он увидит, что «Hello World» будет напечатан в окне вывода консоли IDE.
Я объясню настройку только для NetBeans . Но есть и другие бесплатные и очень мощные IDE. Например, Eclipse и IntelliJ Idea могут быть использованы в качестве хорошей альтернативы.
В качестве самого первого шага загрузите и установите Java Development Kit ( JDK ) от Sun (не Java Runtime Environment = JRE ). Тогда получите последнюю версию NetBeans здесь, где достаточно пакета Java SE.
Получить пример как почтовый файл здесь и распаковать его в ваши местные NetBeans папки с помощью:
Откройте избранное окно под Window-> Favorites. Щелкните правой кнопкой мыши в этом окне и добавьте папку загрузки (с файлом zip) в избранное:
Разверните zip-файл (левый треугольник) и скопируйте папку, щелкнув правой кнопкой мыши:
Затем вставьте его туда, где хотите. Откройте проект с помощью правой кнопки мыши -> Открыть проект ‘TestDrivenTeaching1’ или откройте его через Файл-> Открыть проект …
Весь код является свободным программным обеспечением и распространяется под лицензией GPL v3.0 . Все источники расположены в папке src; все подпапки в этой папке эквивалентны пакетам Java и используются для лучшей организации вашего кода. Вы увидите логическое представление Java-пакета для этого проекта в «Окне проектов» и «обычная папка» в окне «Файлы»:
Поэтому загляните в пакет de.tdtut.section1, чтобы открыть класс HelloWord двойным щелчком мыши:
Затем нажмите «Run File» или нажмите SHIFT F6 в этом файле HelloWorld, и вы увидите в «Output Window» sth. лайк:
run:
Hello World
0
BUILD SUCCESSFUL
(Первый и последний оператор генерируются из NetBeans и должны игнорироваться!)
Под капотом группа символов «Hello World» под названием String будет передана в качестве единственного параметра методу println («печать строки в стандартный вывод»).
Любое автономное Java-приложение может быть запущено вне NetBeans, например, из командной строки. Перейдите в папку проекта и введите:
java -cp dist/TestDrivenTeaching.jar de.tdtut.section1.HelloWord
В качестве результата вы должны увидеть только «Hello World». Последний аргумент должен быть классом с методом main:
public static void main(String[] args)
Если вы добавите некоторые аргументы, например, через:
java -cp dist/TestDrivenTeaching.jar de.tdtut.section1.HelloWord arg1 arg2
Ты увидишь
Hello World
2
arg1
arg2
Это из-за цикла for, который просматривает список строк и выбирает одну за другой.
for (String arg : args) {
System.out.println(arg);
}
Этот список называется массивом и был инициализирован из аргументов командной строки и имеет статическую длину, которую впоследствии нельзя изменить. Если вы хотите получить доступ к одному элементу массива, вы можете сделать это с помощью args [0] и args [1]. Убедитесь, что число (называемое индексом) начинается с 0 и продолжается только до args.length — 1. Поэтому, если вы хотите иметь полный контроль над итерацией, используйте эту версию с явным счетчиком типа int:
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
Счетчик i объявлен (и виден) только внутри блока цикла for. С линией
int i = 0;
я был объявлен и
инициализирован с 0. После каждого шага я буду увеличиваться на единицу. Цикл выполнит свой блок, только если счетчик i меньше, чем args.length.
Вопросы
Если последние предложения были немного подавляющими для вашей головы: нет проблем! Просто попробуйте немного или перейдите к следующему разделу !
Например, вы можете объявить некоторые другие переменные и напечатать их или попробовать выполнить итерацию в обратном порядке по аргументам массива. Самый важный шаг для изучения программирования или нового языка программирования — подумать, что вы хотите, и попытаться реализовать это.