diff --git a/.gradle/6.3/executionHistory/executionHistory.lock b/.gradle/6.3/executionHistory/executionHistory.lock
deleted file mode 100644
index a7604be..0000000
Binary files a/.gradle/6.3/executionHistory/executionHistory.lock and /dev/null differ
diff --git a/.gradle/6.3/fileChanges/last-build.bin b/.gradle/6.3/fileChanges/last-build.bin
deleted file mode 100644
index f76dd23..0000000
Binary files a/.gradle/6.3/fileChanges/last-build.bin and /dev/null differ
diff --git a/.gradle/6.3/fileHashes/fileHashes.lock b/.gradle/6.3/fileHashes/fileHashes.lock
deleted file mode 100644
index 2b22044..0000000
Binary files a/.gradle/6.3/fileHashes/fileHashes.lock and /dev/null differ
diff --git a/.gradle/6.3/gc.properties b/.gradle/6.3/gc.properties
deleted file mode 100644
index e69de29..0000000
diff --git a/.gradle/6.5/executionHistory/executionHistory.bin b/.gradle/6.5/executionHistory/executionHistory.bin
deleted file mode 100644
index ca60313..0000000
Binary files a/.gradle/6.5/executionHistory/executionHistory.bin and /dev/null differ
diff --git a/.gradle/6.5/executionHistory/executionHistory.lock b/.gradle/6.5/executionHistory/executionHistory.lock
deleted file mode 100644
index 7ae781a..0000000
Binary files a/.gradle/6.5/executionHistory/executionHistory.lock and /dev/null differ
diff --git a/.gradle/6.5/fileChanges/last-build.bin b/.gradle/6.5/fileChanges/last-build.bin
deleted file mode 100644
index f76dd23..0000000
Binary files a/.gradle/6.5/fileChanges/last-build.bin and /dev/null differ
diff --git a/.gradle/6.5/fileHashes/fileHashes.bin b/.gradle/6.5/fileHashes/fileHashes.bin
deleted file mode 100644
index adb536e..0000000
Binary files a/.gradle/6.5/fileHashes/fileHashes.bin and /dev/null differ
diff --git a/.gradle/6.5/fileHashes/fileHashes.lock b/.gradle/6.5/fileHashes/fileHashes.lock
deleted file mode 100644
index b89035b..0000000
Binary files a/.gradle/6.5/fileHashes/fileHashes.lock and /dev/null differ
diff --git a/.gradle/6.5/gc.properties b/.gradle/6.5/gc.properties
deleted file mode 100644
index e69de29..0000000
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
deleted file mode 100644
index 125640c..0000000
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and /dev/null differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
deleted file mode 100644
index b774acd..0000000
--- a/.gradle/buildOutputCleanup/cache.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-#Thu Oct 08 23:16:29 MSK 2020
-gradle.version=6.3
diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock
deleted file mode 100644
index 2cf264e..0000000
Binary files a/.gradle/checksums/checksums.lock and /dev/null differ
diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties
deleted file mode 100644
index e69de29..0000000
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index c8b5c9a..0000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
deleted file mode 100644
index 87ca0fc..0000000
--- a/.idea/gradle.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
deleted file mode 100644
index fdc392f..0000000
--- a/.idea/jarRepositories.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index b0ec460..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
index c29a8be..fd73923 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,14 @@
-# Примеры для курса "Разработчик Java" в OTUS
+Написать свой тестовый фреймворк.
-Группа 2020-09
+Поддержать свои аннотации @Test, @Before, @After.
-### Преподаватели
-Сергей Петрелевич
-Стрекалов Павел
-Александр Оруджев
-Вячеслав Лапин
-Виталий Куценко
-Дмитрий Коган
+Запускать вызовом статического метода с именем класса с тестами.
-Студент:
-Kashapov Renat (Кашапов Ренат)
-renat.kashapov@gmail.com
\ No newline at end of file
+Т.е. надо сделать:
+
+создать три аннотации - @Test, @Before, @After.
+Создать класс-тест, в котором будут методы, отмеченные аннотациями.
+Создать "запускалку теста". На вход она должна получать имя класса с тестами, в котором следует найти и запустить методы отмеченные аннотациями и пункта 1.
+Алгоритм запуска должен быть следующий:: метод(ы) Before текущий метод Test метод(ы) After для каждой такой "тройки" надо создать СВОЙ объект класса-теста.
+Исключение в одном тесте не должно прерывать весь процесс тестирования.
+На основании возникших во время тестирования исключений вывести статистику выполнения тестов (сколько прошло успешно, сколько упало, сколько было всего)
diff --git a/hw03-testFW/build.gradle b/hw03-testFW/build.gradle
new file mode 100644
index 0000000..791b924
--- /dev/null
+++ b/hw03-testFW/build.gradle
@@ -0,0 +1,9 @@
+plugins {
+ id 'java'
+ id 'application'
+}
+
+group 'ru.otus'
+version '1.0-SNAPSHOT'
+
+mainClassName = 'ru.otus.TestFW'
\ No newline at end of file
diff --git a/hw03-testFW/src/main/java/ru/otus/After.java b/hw03-testFW/src/main/java/ru/otus/After.java
new file mode 100644
index 0000000..9654aab
--- /dev/null
+++ b/hw03-testFW/src/main/java/ru/otus/After.java
@@ -0,0 +1,11 @@
+package ru.otus;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface After {
+}
diff --git a/hw03-testFW/src/main/java/ru/otus/Before.java b/hw03-testFW/src/main/java/ru/otus/Before.java
new file mode 100644
index 0000000..4b294ac
--- /dev/null
+++ b/hw03-testFW/src/main/java/ru/otus/Before.java
@@ -0,0 +1,11 @@
+package ru.otus;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Before {
+}
diff --git a/hw03-testFW/src/main/java/ru/otus/Test.java b/hw03-testFW/src/main/java/ru/otus/Test.java
new file mode 100644
index 0000000..29e8e5f
--- /dev/null
+++ b/hw03-testFW/src/main/java/ru/otus/Test.java
@@ -0,0 +1,11 @@
+package ru.otus;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Test {
+}
diff --git a/hw03-testFW/src/main/java/ru/otus/TestFW.java b/hw03-testFW/src/main/java/ru/otus/TestFW.java
new file mode 100644
index 0000000..1101900
--- /dev/null
+++ b/hw03-testFW/src/main/java/ru/otus/TestFW.java
@@ -0,0 +1,62 @@
+package ru.otus;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.*;
+
+public class TestFW {
+ private static short failedTest;
+ public static void main(String ... args){
+ System.out.println("Hello, Test Framework");
+ testStarter(TestedClass.class);
+ }
+ static void testStarter(Class> clazz) {
+ Method [] methods = clazz.getDeclaredMethods();
+ Map, Set> annotationSetMethod = new HashMap<>();
+ annotationSetMethod.put(Before.class, new HashSet<>());
+ annotationSetMethod.put(Test.class, new HashSet<>());
+ annotationSetMethod.put(After.class, new HashSet<>());
+ for(Method method:methods){
+ for(Annotation annotation:method.getDeclaredAnnotations()){
+ Set methodSet = annotationSetMethod.get(annotation.annotationType());
+ if(methodSet!=null){
+ methodSet.add(method);
+ }
+ }
+ }
+ annotationSetMethod.get(Test.class).forEach(methodTest -> {
+ Object testedObject;
+ try {
+ testedObject = clazz.getConstructor().newInstance();
+ if (testedObject == null) {
+ throw new NullPointerException();
+ } else {
+ try {
+ methodsExecution(annotationSetMethod.get(Before.class), testedObject);
+ methodTest.invoke(testedObject);
+ methodsExecution(annotationSetMethod.get(After.class), testedObject);
+ } catch (Exception e) {
+ failedTest++;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ });
+ System.out.println("Failed tests: " + failedTest);
+ System.out.println("Passed tests: " + (methods.length-failedTest));
+ }
+
+ private static void methodsExecution(Set methodSet, Object testedObject){
+ methodSet.forEach(method -> {
+ try {
+ method.invoke(testedObject);
+ }
+ catch (IllegalAccessException | InvocationTargetException e){
+ e.printStackTrace();
+ }
+ });
+ }
+}
diff --git a/hw03-testFW/src/main/java/ru/otus/TestedClass.java b/hw03-testFW/src/main/java/ru/otus/TestedClass.java
new file mode 100644
index 0000000..1f558c3
--- /dev/null
+++ b/hw03-testFW/src/main/java/ru/otus/TestedClass.java
@@ -0,0 +1,31 @@
+package ru.otus;
+
+public class TestedClass {
+
+ public TestedClass(){}
+
+ @After
+ public void methodAfter1(){System.out.println("I'm methodAfter1 (this.hashCode(): " + hashCode() + ")");}
+
+ @After
+ public void methodAfter2(){System.out.println("I'm methodAfter2 (this.hashCode(): " + hashCode() + ")");}
+
+ @Before
+ public void methodBefore1(){
+ System.out.println("I'm methodBefore1 (this.hashCode(): " + hashCode() + ")");
+ }
+
+ @Before
+ public void methodBefore2(){
+ System.out.println("I'm methodBefore2 (this.hashCode(): " + hashCode() + ")");
+ }
+
+ @Test
+ public void methodTest1(){
+ System.out.println("I'm methodTest1 (this.hashCode(): " + hashCode() + ")");
+ throw new ArithmeticException();
+ }
+
+ @Test
+ public void methodTest2() {System.out.println("I'm methodTest2 (this.hachCode(): " + hashCode() + ")");}
+}
diff --git a/settings.gradle b/settings.gradle
index 9a32c0b..67ef2fa 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,2 @@
rootProject.name = 'otus_hw'
-
+include 'hw03-testFW'
\ No newline at end of file
diff --git a/src/main/java/A.java b/src/main/java/A.java
deleted file mode 100644
index 6be5562..0000000
--- a/src/main/java/A.java
+++ /dev/null
@@ -1,5 +0,0 @@
-public class A {
- public static void main(String ... args){
- System.out.println("Hello, gradle + git!");
- }
-}