Пререквизиты:
1. Выполнить установку jdk-7
2. Скачать сборку webСrawler.
3. Выполнить установку IDE ideaIC-12.1.2
4. На рабочем столе создайте папку JavaForQA-#Surname# , дальнейшая работа будет
происходить в этой папке.
Задание 1
1. В корне рабочей директории создайте папку Task1, в которой выполняйте следующее
задание.
2. Создайте текстовый файл с именем HelloWorld и сохраните его в расширении .java
3. Откройте с помощью блокнота.
4. Добавьте в него следующий код:
public class HelloWorld {
public static void main(String[] args) {
[Link]("HelloWorld!");
}
}
5. Создайте в этой же директории два файла: [Link] и [Link], в
которые поместите следующий код:
a. В [Link]:
javac [Link]
pause
b. В [Link]:
java HelloWorld
pause
6. Скомпилируйте программу при помощи файла [Link]
7. Запустите при помощи [Link].
Задание 2
1. В корне рабочей директории создайте папку Task2, в которой выполняйте следующее
задание.
2. По аналогии с предыдущим заданием создайте в папке класс MyCalculator.
3. Добавьте в него конструктор, который при создании объекта будет принимать на вход
следующие параметры:
public MyCalculator(double a, String o, double b)
Как видите, наш конструктор принимает на вход два числа и знак операции между ними. Знак
операции передается в переменной ссылочного типа String, поэтому помните, сравнивать ее
надо при помощи метода equals().
4. Внутрь конструктора добавьте сравнение получаемого знака операции с основными
операциями(“+”, ”-”, ”*”, ”/”)
if ([Link]("+")) {
//TODO
return;
} else if ([Link]("-")) {
//TODO
return;
} else if ([Link]("*")) {
//TODO
return;
} else if ([Link]("/")) {
//TODO
return;
}
5. Создайте в классе методы, которые будут возвращать результаты выполнения необходимых
операций.
Пример метода, который возвращает результат суммирования:
public double sum(double a, double b) {
return a + b;
}
6. Внутри конструктора, вместо //TODO впишите вызовы соответствующих функций.
7. Так как, нам нужно результат выводить на экран, сделайте вызовы функций внутри метода
[Link]();
Также, при выводе результата работы программы, можно добавить данные, которые были
переданы на вход:
[Link](a + " + " + b + " = " + sum(a, b));
8. Добавьте в конструктор вывод ошибки, в том случае, если проверяемый символ не совпал ни
с одним символом операции.
9. В методе main() опишите создание объекта класса MyCalculator. В качестве параметров
конструктора, передавайте на вход значения из массива String[] args, которые передаются в
метод main(String[] args).
Так, как метод main() принимает на вход массив элементов типа String, а принимаем в
конструктор еще и элементы типа double, при создании объекта нужно необходимые элементы
преобразовать в double
new MyCalculator([Link](args[0]), args[1], [Link](args[2]));
10. Добавьте в метод main() проверку входящих данных, а именно, если массив String[] args
имеет длину более 3-х символов, то создаем объект MyCalculator, иначе выводим сообщение
о соответственной ошибке.
11. По аналогии с предыдущим заданием создайте файлы [Link] и
[Link]. Но в файле [Link] после кода java MyCalculator нужно
передать параметры, которые передаются в main(String[] args), например: “1 + 13”
Задание 3
1. В корне рабочей директории создайте папку Task3, в которой выполняйте следующее
задание
2. С помощью IDE создайте проект с именем JavaForQATask3-#Surname#.
Гайд по созданию и запуску проекта можно найти здесь.
3. Создайте класс с именем HelloUIWorld
4. Добавьте в него следующий код:
import [Link].*;
public class HelloUIWorld extends JFrame {
JLabel label1;//глобальный объект класса JLabel который содержит статический текст
public HelloUIWorld() {
super("Hello UI world");//заголовок окна
JFrame jf = new JFrame();//фрейм
JPanel p = new JPanel();//панель
JLabel label1 = new JLabel("Hello UI World");//инициализация переменной
[Link](p);// добавление панели в фрейм
[Link](JFrame.EXIT_ON_CLOSE);//действие при нажатии на крестик
[Link](200, 90);// размер окна
[Link](label1);//добавление на панель переменной label1
[Link](true);// отображение окна
}
public static void main(String[] args) {
HelloUIWorld app = new HelloUIWorld();//создание экземпляра класса окна
}
}
1. Запустите main() метод созданного класса.
Как видите самое главное в нашем окне, это текст «Hello UI World», который добавляется на
панель вызовом метода add() для объекта JPanel. Таким образом, можно добавить в окно
любые объекты, которые мы обычно видим в оконных приложениях.
2. Добавьте, на созданный ранее объект класса JPanel, еще три объекта JLabel и один JTextField,
при инициализации используйте следующие параметры:
Тип Имя Параметр конструктора
JLabel label2 Label2
JLabel label3 Label3
JLabel label4 Label4
JTextField text1 Text1
Процесс создания и добавления объектов на панель аналогичен работе с объектом label1 в
коде, предоставленным в пункте 4.
3. Запустите main() метод созданного класса.
Как видите, JTextField не помещается в наше окно, а при его растягивании все наши объекты
выстраиваются в одну линию. Для того чтоб их выстраивать таким образом как нам нужно,
можно воспользоваться менеджерами компоновки Layout, например GridLayout.
4. Реализуйте работу с менеджером компоновки GridLayout. Для этого примените к созданному
экземпляру класса JPanel метод setLayout(new GridLayout(5, 1)).
В процессе выполнения задания, при необходимости, корректируйте размер окна (при помощи
метода [Link](ширина, высота)).
5. Добавьте на панель объект JButton(кнопка) с именем button1, процесс добавления этого
объекта аналогичен предыдущим.
В данный момент наша кнопка ничего не делает, т.к. мы не описали для нее инструкции.
6. Добавьте следующий метод в свой класс, который будет реагировать на нажатие кнопки:
private void initListeners() {
[Link](new ActionListener() {
public void actionPerformed(ActionEvent a) {
//TODO
}
});
}
Вместо //TODO можно написать любое действие, которое вы хотите, чтоб выполнялось при
нажатии на кнопку
7. С помощью стандартных методов setText и getText сделайте так, чтоб при нажатии на кнопку,
текст, отображаемый в вашем JTextField, отображался в первом JLabel. Для этого:
[Link]([Link]());
8. Примените к своему JFrame методы setLocationRelativeTo(null) и setResizable(false), с
помощью которых можно сделать так, чтобы при открытии, программа отображалась по
центру экрана, и ее размеры нельзя было изменить с помощью растягивания.
[Link](null);
[Link](false);
9. Запустите main() метод созданного класса
Задание 4
В этом задании мы напишем программу, которая будет менять файл [Link], с последующим
запуском webСrawler. Файл [Link] содержит необходимые параметры для запуска и
тестирования с помощью инструмента webСrawler.
1. В корне рабочей директории создайте папку Task4, в которой выполняйте следующее
задание
2. С помощью IDE создайте проект с именем JavaForQATask4-#Surname#.
3. Подключите к нему находящиеся в архиве [Link].
Для того чтоб подключить библиотеки выполните следующие действия:
Нажмите Ctrl+Alt+Shift+S
В открывшемся окне перейдите в боковую вкладку Libraries
Нажмите на [+]
Выберете Java
В открывшемся окне выберите папку с библиотеками
4. Создайте класс ConfigEditor.
5. Используя знания, полученные в предыдущем задании, создайте окно как на следующем
скриншоте:
6. Замените текст элементов JLabel, используемых ранее, следующими: [Link], [Link],
[Link], [Link]. Это обязательные параметры для конфигурации webСrawler.
Для считывания параметров с файла [Link] инструмент webСrawler использует
библиотеку taCommon, в которой есть класс Config, отвечающий за взаимодействие с
конфигурационным файлом.
7. Создайте объект класса Config, назовите его myConfig.
8. С помощью метода getString("Параметр") считайте значения нужных параметров с объекта,
созданного в предыдущем пункте, и поместите их в соответствующие JTextField.
Для проверки работы программы распакуйте в корень проекта сборку webСrawler указанную в
пререквизитах.
Для того чтоб изменения которые мы осуществили в поле JTextField были сохранены в
переменную конфигурации myConfig, нам нужно, чтоб при нажатии кнопки [Update] значение
соответствующей переменной изменялось и в myConfig.
9. Добавьте листнеры для кнопок, которые будут изменять значения параметров в вашей
переменной myConfig. Для этого воспользуйтесь методом setString("Параметр", "Значение");
10. Для проверки изменения myConfig выводите содержимое изменяемого параметра в консоль:
[Link]([Link]("Параметр"))
Сейчас программа изменяет значения параметров только в переменной myConfig, но не заносит
изменения в файл [Link], для того чтоб перезаписать файл [Link] воспользуйтесь
FileWriter, который предназначается для записи потоков символов. Помните: после перезаписи
файла, его нужно закрывать (метод close()).
11. В листнерах создайте объекты класса FileWriter, в конструкторах которых, передавайте путь к
[Link], который можно узнать с помощью метода getTestPropertiesFilePath()
12. С помощью метода write(“text”) внесите содержимое вашей переменной myConfig в файл.
Извлечь содержимое myConfig можно при помощи метода getConfig() но при этом не стоит
забывать что нужно привести ее к типу String, в том виде, который был изначально (каждый
параметр с новой строки, без фигурных скобок и запятых) т.к. интересующее нас содержимое
переменной myConfig имеет тип Properties, и хранит параметры в удобном для себя виде,
заменять нужные символы можно с помощью метода replace(“что меняем”, ”на что меняем”)
13. Добавьте кнопку, которая будет запускать [Link], запустить внешний файл можно с
помощью следующей функции:
public static void startRun() throws IOException {
String userDir = [Link]("[Link]");
String[] cmd = new String[] { "[Link]", "/C", "start file:" + userDir + "\\[Link]" };
Process process = [Link]().exec(cmd);
}
14. Вместо четырех кнопок [Update] сделайте одну, которая будет изменять все параметры.
В конце программа должна иметь следующий вид:
15. Запустите main() метод созданного класса.
16. При помощи созданной программы измените значения параметров на те, которые указаны
на скриншоте выше, и обновите содержимое конфигурационного файла [Link] при
помощи кнопки [Update].
17. Запустите webCrawler, при помощи кнопки [Run].
Результаты выполнения автотеста можете увидеть в создавшейся папке result/report/[Link]
Для корректного отображения результатов тестирования открывайте [Link] с
помощью FireFox.