diff --git a/lectures/revealjs/08-lecture.adoc b/lectures/revealjs/08-lecture.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..36a93dff2a0985abf761b1cf13a4a804ea3488eb
--- /dev/null
+++ b/lectures/revealjs/08-lecture.adoc
@@ -0,0 +1,245 @@
+= Unit testing 
+:customcss: slides.css
+:icons: font
+:includedir: includes/
+:LECTURE_TOPIC: Unit testing 
+:LECTURE_NO: 8th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2021 - {LECTURE_NO}
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Testing
+
+== Testing
+
+[%step]
+- is an important part of software development
+- a way to ensure software quality
+- automated testing allows to develop new features with a minimal effort to check if the software still works as expected
+- testing frameworks  
+
+== Testing (2)
+
+[%step]
+- design 
+- implement
+- write automated tests
+- run tests
+- we do not test just for know, we write tests to keep running them during project life cycle 
+
+== Testing (3)
+
+[%step]
+- design tests
+- implement the test
+- provide inputs
+- run the tests
+- provide expected outputs
+- check if the result  we get matches what we expect
+- produce a manageable output that the developer can consult 
+
+== Testing (3)
+
+- design tests
+- implement the test
+- provide inputs
+- *run the tests*
+- provide expected outputs
+- *check if the result  we get matches what we expect*
+- *produce a manageable output that the developer can consult* 
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== JUnit
+
+
+== JUnit
+
+- Is a Java unit testing framework.
+- provides the means to automate test
+- allows to eliminate redundant testing tasks  
+
+
+== JUnit 4
+
+``` java
+import org.junit.*;
+
+public class FoobarTest {
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+        // Code executed before the first test method
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        // Code executed before each test
+    }
+ 
+    @Test
+    public void testOneThing() {
+        // Code that tests one thing
+    }
+
+    @Test
+    public void testAnotherThing() {
+        // Code that tests another thing
+    }
+
+    @Test
+    public void testSomethingElse() {
+        // Code that tests something else
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        // Code executed after each test 
+    }
+ 
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+        // Code executed after the last test method 
+    }
+}
+```
+
+[.smaller-40]
+https://en.wikipedia.org/wiki/JUnit
+
+== JUnit 5 
+
+``` java
+import org.junit.jupiter.api.*;
+
+public class FoobarTest {
+    @BeforeAll
+    public static void setUpClass() throws Exception {
+        // Code executed before the first test method
+    }
+
+    @BeforeEach
+    public void setUp() throws Exception {
+        // Code executed before each test
+    }
+ 
+    @Test
+    public void testOneThing() {
+        // Code that tests one thing
+    }
+
+    @Test
+    public void testAnotherThing() {
+        // Code that tests another thing
+    }
+
+    @Test
+    public void testSomethingElse() {
+        // Code that tests something else
+    }
+
+    @AfterEach
+    public void tearDown() throws Exception {
+        // Code executed after each test 
+    }
+ 
+    @AfterAll
+    public static void tearDownClass() throws Exception {
+        // Code executed after the last test method 
+    }
+}
+```
+
+== JUnit 4 vs JUnit 5
+
+[.smaller-60]
+[%header,cols=3*] 
+|===
+|Element
+|JUnit 4
+|JUnit 5
+
+
+|package
+|org.junit.*
+|org.junit.jupiter.api.*
+
+|code before first test
+|@BeforeClass
+|@BeforeAll
+
+|code before each test
+|@Before
+|@BeforeEach
+
+|test
+|@Test
+|@Test
+
+|code after each test
+|@After
+|@AfterEach
+
+|code after last test
+|@AfterClass
+|@AfterAll
+
+
+
+|===
+
+== JUnit 4 vs JUnit 5 (2)
+
+[.smaller-60]
+[%header,cols=3*] 
+|===
+|Element
+|JUnit 4
+|JUnit 5
+
+
+|ignoring test
+|@Ignore
+|@Disabled
+
+|assertions *statically* accessed with
+|`Assert.assert`...
+|`Assertions.assert`...
+
+|assertion messsage position
+|in the beginning of argument list
+|in the end of argument list   
+
+|===
+
+== Expecting exceptions (1)
+
+``` java
+@Test
+void testAssertingExpectedException() {
+	Assertions.assertThrows(<ExpectedException.class>, () -> {
+	    <code expected to throw exception>;
+		});
+}
+```
+
+== Expecting exceptions (2)
+
+- if the code throws
+** the exception class that is expected the the test will PASS
+** a descendent class exception that is expected the the test will PASS
+** a different exception type the test will FAIL
+** throws no exception the test will FAIL
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Testing in todo-list example
+
+
+include::{includedir}footer.adoc[]
\ No newline at end of file