Basics of automatization
Вы участвуете в проекте CashbackHacker - небольшой сервис, который сообщает пользователю о том, сколько ему нужно "докупить" в рамках конкретной траты, чтобы получить максимальное количетство кэшбека.
Подробнее: кэшбек начисляется за каждую потраченную полную тысячу рублей, поэтому если вы покупаете что-то на 900 рублей, сервис должен посоветовать вам докупить "ещё чего-нибудь" на 100 рублей.
Код сервиса выглядит следующим образом:
package ru.netology.service;
public class CashbackHackService {
private final int boundary = 1000;
public int remain(int amount) {
return boundary - amount % boundary;
}
}
Вам нужно создать проект на базе Gradle (как на лекции), не добавляя в него внешних зависимостей.
Выложите полученный проект на GitHub. Не забудьте про файл .gitignore. Подключите Github Actions.
Поскольку вы уже умеете работать с JUnit5 вам поручили провести небольшое исследование, в рамках которого попробовать использовать TestNG и JUnit4 (тот самый пресловутый кейс - попробуем что-то сделать, а потом уже будем принимать решения).
TestNG сравнительно неплохо документирован.
На этом уровне, с точки зрения пользователя, почти всё*, что поменяется - мы подключим другую библиотеку и будем использовать аннотации из неё и assert'ы.
Ключевые аннотации (вы можете прочитать JavaDoc'и на них).
Ключевые Assert'ы (вы можете прочитать JavaDoc'и на них).
Сделайте ветку testng, в которой:
1. Добавьте в зависимости TestNG:
dependencies {
testImplementation 'org.testng:testng:7.1.0'
}
test {
useTestNG()
}
2. Напишите простые автотесты (без параметризации) на основании материала следующего раздела.
На этом уровне для нас поменяется всего три вещи:
- Аннотация
@Test
должна имеет Fully Qualified Nameorg.testng.annotations.Test
- Assert'ы расположены в классе
org.testng.Assert
(обратите внимание: в TestNG принятоactual, expected
вместоexpected, actual
) - Класс и тестовые методы должны иметь модификатор доступа
public
(именно поэтому мы вам рекомендовали прописывать модификаторы в тестовых классах)
JUnit4 (по сравнению с JUnit5) практически не документирован, поэтому всё, что нам доступно - это JavaDoc'и и FAQ.
На этом уровне, с точки зрения пользователя, почти всё*, что поменяется - мы подключим другую библиотеку и будем использовать аннотации из неё и assert'ы.
Ключевые аннотации (вы можете прочитать JavaDoc'и на них):
Ключевые Assert'ы (вы можете прочитать JavaDoc'и на них):
Сделайте ветку junit4, в которой:
1. Добавьте в зависимости JUnit:
dependencies {
testImplementation 'junit:junit:4.13'
}
test {
useJUnit()
}
2. Напишите простые автотесты (без параметризации)
На этом уровне для нас поменяется всего три вещи:
- Аннотация
@Test
должна имеет Fully Qualified Nameorg.junit.Test
- Assert'ы расположены в классе
org.junit.Assert
- Класс и тестовые методы должны иметь модификатор доступа
public
(именно поэтому мы вам рекомендовали прописывать модификаторы в тестовых классах)
В сервисе точно есть ошибка, поэтому один из ваших авто-тестов должен падать.
Подсказка
Если пользователь купил ровно на 1000 рублей, то приложение не должно ему говорить, что нужно купить ещё на 1000.