Тесты по java онлайн. Тест для Java-программистов, или Не слишком ли я строг к претендентам? Заглянем в мой ящик с инструментами

Тесты по java онлайн. Тест для Java-программистов, или Не слишком ли я строг к претендентам? Заглянем в мой ящик с инструментами

Java - объектно-ориентированный строготипизированный язык программирования, разработанный компанией Sun Microsystems в 1991 году. Изначально язык назывался Oak и предназначался для программирования бытовой электроники, однако позже был переименован в Java. Официальный выпуск Java в 1995 году оказался очень успешным и вскоре после этого язык Java занял сильные позиции в качестве инструмента разработки серверных приложений.

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

Целевая аудитория теста по Java

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

Предварительные требования к тесту Java

Подразумевается, что перед прохождением теста по основам Java вы уже знаете основные понятие, такие как "переменная", "цикл", "метод" и знаете синтаксис основных языковых конструкций. В случае если это не так, рекомендуем вам предварительно ознакомиться с основами Java, путем прочтения вводного курса.

Структура теста по Java

Тест "Java - Основы" освещает следующие темы:

Подробнее о тематиках вопросов теста можно прочесть ниже:

  • Объекты и классы: вопросы этой тематики покрывают такие понятия как класс, экземпляр класса (объект), конструкторы, методы и поля класса.
  • Синтаксис: вопросы этого раздела проверят знание ключевых слов языка, операторов, основных типов (примитивы, String), управляющих конструкций (if-else, while, for), а также понимание обработки исключительных ситуаций (Exception).
  • Другое: этот раздел содержит вопросы касающиеся основных понятий, терминов и аббревиатур, конвенций именования классов, переменных и методов. Также в этом разделе рассматриваются вопросы по файлам (.java, .class, .jar) и пакетам, жизненному циклу объектов, сборке мусора (garbage collection).

Прохождение онлайн теста Java помогает вам проверить и закрепить знание основ Java, а также подводит вас к прохождению более сложных тестов из раздела тестов по Java.

Надеемся, что данный тест будет для вас полезным и занимательным.

Дальнейшее развитие теста по Java

Тест по Java постоянно пополняется новыми вопросами.

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

Если у Вас есть замечания по поводу вопросов теста, обязательно пишите нам. Удачи.

Тестирование далеко не всегда бывает веселым и интересным. Этот процесс обычно достаточно продолжителен и порой полон монотонной работы. Кажется, еще совсем недавно программисты пользовались стандартным выводом или же дебаггером для тестирования java классов.

В этой статье я опишу библиотеку JUnit 4, которая во многом упрощает и автоматизирует процесс написания тестов.

Для демонстрации основных возможностей JUnit Framework, напишем примитивный класс на языке Java и будем над ним издеваться. Этот класс будет иметь два метода - нахождение факториала неотрицательного числа и суммы двух чисел. Кроме того, в экземпляре класса будет находится счетчик вызовов методов.

Public class MathFunc { int calls; public int getCalls() { return calls; } public long factorial(int number) { calls++; if (number 1) { for (int i = 1; i

Теперь напишем Unit тесты. Для этого создадим класс с некоторым количеством тестовых методов. Естественно, класс может содержать и обычные вспомогательные методы. Чтобы runner тестов мог определить, кто есть кто, тестовые методы необходимо помечать аннтоацией @Test.

У аннотации могут быть проставлены такие параметры:

  • expected - указываем какое исключение будет сгенерировано методом (см. пример ниже);
  • timeout - через какое время в милисекундах прекратить выполнение теста и засчитать его как неуспешный.

Если вы хотите указать, что определенный тест необхдимо пропустить, то пометьте его аннотацией @Ignore. Хотя можно просто удалить аннотацию @Test.

Бывает такое, что для выполнения каждого тестового сценария вам необходим некоторый контекст, например, заранее созданные экземпляры классов. А после выполнения нужно освободить зарезервированные ресурсы. В этом случае вам понадобятся аннтоации @Before и @After. Метод, помеченный @Before будет выполняться перед каждым тестовым случаем, а метод, помеченный @After - после каждого тестового случая.

Если же инициализацию и освобождение ресурсов нужно сделать всего один раз - соответственно до и после всех тестов - то используйте пару аннотаций @BeforeClass и @AfterClass.

А вот и сам тестовый класс с несколькими тестовыми сценариями:

Public class MathFuncTest { private MathFunc math; @Before public void init() { math = new MathFunc(); } @After public void tearDown() { math = null; } @Test public void calls() { assertEquals(0, math.getCalls()); math.factorial(1); assertEquals(1, math.getCalls()); math.factorial(1); assertEquals(2, math.getCalls()); } @Test public void factorial() { assertTrue(math.factorial(0) == 1); assertTrue(math.factorial(1) == 1); assertTrue(math.factorial(5) == 120); } @Test(expected = IllegalArgumentException.class) public void factorialNegative() { math.factorial(-1); } @Ignore @Test public void todo() { assertTrue(math.plus(1, 1) == 3); } }

Метод calls тестирует правильность счетчика вызовов. Метод factorial проверяет правильность вычисления факториала для некоторых стандартных значений. Метод factorialNegative проверяет, что для отрицательных значений факотриала будет брошен IllegalArgumentException. Метод todo будет проигнорирован. Попробуйте убрать аннотацию @Ignore, когда будете экспериментировать с кодом.

Метод assertTrue проверяет, является ли результат выражения верным. Некоторые другие методы, которые могут пригодиться:

  • assertEquals - ожидаемый результат и полученный результат совпадают;
  • assertNull - результатом выражения есть null;
  • assertNotNull - результат выражения отличен от null;
  • assertSame - ожидаемый и полученный объекты это один и тот же объект.
  • fail - метод генерирует исключение AssertionError - добавляем туда, куда не должен дойти ход выполнения программы.

В нашем современном мире IDE умеют находить и просто запускать тесты в проекте. Но что делать, если вы хотите запустить их вручную с помощью программного кода. Для этого можно воспользоваться Runner"ом. Бывают текстовый - junit.textui.TestRunner, графические версии - junit.swingui.TestRunner, junit.awtui.TestRunner.

Но чуть более современный метод - это использование класса JUnitCore. Добавьте следующий метод main в класс MathFuncTest:

Public static void main(String args) throws Exception { JUnitCore runner = new JUnitCore(); Result result = runner.run(MathFuncTest.class); System.out.println("run tests: " + result.getRunCount()); System.out.println("failed tests: " + result.getFailureCount()); System.out.println("ignored tests: " + result.getIgnoreCount()); System.out.println("success: " + result.wasSuccessful()); }

И результат выполнения:

Run tests: 3 failed tests: 0 ignored tests: 1 success: true

В более ранних версиях JUnit для написания тестового класса нужно было создать наследника junit.framework.TestCase. Затем необходимо было определить конструктор, принимающий в качестве параметра String - название метода - и передать его родительскому классу. Каждый тестовый метод обязан был начинаться с префикса test. Для инициализации и освобождения ресурсов использовались методы setUp и tearDown. Короче ужас. Ну а сейчас все просто, да.

Вот и все на сегодня. Уверен, JUnit Framework во многом поможет вам. Комментарии и вопросы по поводу статьи приветствуются.

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

  • Когда я должен использовать инструмент X?
  • Как я должен использовать инструмент X?

Автоматизированное тестирование - очень важная часть разработки ПО, но в блогах программистов немного постов про используемые инструменты. Эта же статья позволит вам заглянуть в мой «ящик с инструментами». Я расскажу о 12-ти библиотеках и фреймворках, которые я использую для написания unit- и интеграционных тестов, а также предоставлю ссылки на страницы, которые помогут вам понять, как их использовать.

Заглянем в мой ящик с инструментами

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

  • Интеграционное тестирование с Maven описывает, как мы можем настроить Maven-сборку с интеграционными и unit-тестами в разных директориях.
  • Начало работы с Gradle: интеграционное тестирование с плагином TestSets описывает то же самое для Gradle.

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

Итак, вот 12 инструментов, которые я использую при интеграционном и unit-тестировании.

Запуск тестов

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

Дополнительно:

  • Использование Hamcrest в тестировании рассказывает, как использовать Hamcrest для написания тестов, а также как расширить его возможности с помощью пользовательских модулей.
  • Превращаем утверждения в предметно-ориентированный язык рассказывает, как создавать пользовательские утверждения в AssertJ.
  • Пишем чистые тесты: замена утверждений предметно-ориентированным языком . Рассказывает, почему мы должны заменить стандартные утверждения JUnit собственными, которые используют верный предметно-ориентированный язык.

Тестирование кода доступа к данным

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

Расширение для JUnit, которое может быть использовано для инициализации БД в известное состояние перед выполнением каждого интеграционного теста и заполнения БД нужными данными. У DbUnit есть свои недостатки, но это очень полезный инструмент, позволяющий разделить тестовые данные и тестовый код.

Дополнительно:

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