diff --git a/car/pom.xml b/car/pom.xml
index 108906b91dc88f29a16498d97bfb96d11cdf4082..0cdce75d25cebfa6d17d72debc8479989c33db75 100644
--- a/car/pom.xml
+++ b/car/pom.xml
@@ -64,6 +64,11 @@
             <artifactId>json</artifactId>
             <version>20210307</version>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
diff --git a/car/src/main/java/cz/muni/pa165/car/App.java b/car/src/main/java/cz/muni/pa165/car/App.java
index acf19d92fe628aadaa00a9cfbab48f4bcba05208..028b53c9ccabcbecfd159a8e7d86da67a070f0c7 100644
--- a/car/src/main/java/cz/muni/pa165/car/App.java
+++ b/car/src/main/java/cz/muni/pa165/car/App.java
@@ -18,7 +18,7 @@ import org.springframework.web.client.RestTemplate;
  * Main app.
  */
 @SpringBootApplication
-@EnableJpaRepositories(basePackages = {"cz.muni.pa165.car.data.repository"})
+//@EnableJpaRepositories(basePackages = {"cz.muni.pa165.car.data.repository"})
 @EnableTransactionManagement
 @EntityScan(basePackageClasses = {Car.class, Driver.class, CarComponent.class})
 //@Import({RestExceptionHandler.class, ClientConfig.class})
diff --git a/car/src/test/java/cz/muni/pa165/car/rest/integration/CarComponentPairControllerIntegrationTest.java b/car/src/test/java/cz/muni/pa165/car/rest/integration/CarComponentPairControllerIntegrationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..87ddb902b2b7c0e3638fd78ba9e7458ed0ccda0f
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/rest/integration/CarComponentPairControllerIntegrationTest.java
@@ -0,0 +1,24 @@
+package cz.muni.pa165.car.rest.integration;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class CarComponentPairControllerIntegrationTest {
+
+//  @BeforeEach
+//  void setUp() {
+//  }
+//
+//  @Test
+//  void addComponent() {
+//  }
+//
+//  @Test
+//  void removeComponent() {
+//  }
+//
+//  @Test
+//  void getAllComponentsOfCar() {
+//  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/rest/integration/CarControllerIntegrationTest.java b/car/src/test/java/cz/muni/pa165/car/rest/integration/CarControllerIntegrationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..babbe28743b608f12ec09f1d9489772da6e9c882
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/rest/integration/CarControllerIntegrationTest.java
@@ -0,0 +1,40 @@
+package cz.muni.pa165.car.rest.integration;
+
+import cz.muni.pa165.car.data.model.Car;
+import cz.muni.pa165.car.data.repository.CarRepository;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+
+@RunWith(SpringRunner.class)
+@DataJpaTest
+class DriverControllerItTest {
+
+  @Autowired
+  private TestEntityManager entityManager;
+
+  @Autowired
+  private CarRepository carRepository;
+
+  @Test
+  public void testSave() {
+    Car car = Car.builder()
+        .id(1L)
+        .components(List.of(2L, 3L, 4L))
+        .drivers(List.of(5L, 6L, 7L))
+        .mainDriverId(6L)
+        .build();
+
+    Car savedCar = carRepository.save(car);
+
+    Assertions.assertEquals(savedCar, car);
+    Assertions.assertEquals(entityManager.find(Car.class, 1L).getId(), 1);
+  }
+
+}
diff --git a/car/src/test/java/cz/muni/pa165/car/rest/integration/CarDriverPairControllerIntegrationTest.java b/car/src/test/java/cz/muni/pa165/car/rest/integration/CarDriverPairControllerIntegrationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c510a3c275af7261da767c166bc4546da7cee41
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/rest/integration/CarDriverPairControllerIntegrationTest.java
@@ -0,0 +1,32 @@
+package cz.muni.pa165.car.rest.integration;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class CarDriverPairControllerIntegrationTest {
+
+//  @BeforeEach
+//  void setUp() {
+//  }
+//
+//  @Test
+//  void assignDriverToCar() {
+//  }
+//
+//  @Test
+//  void unassignDriverFromCar() {
+//  }
+//
+//  @Test
+//  void getAllDriversOfCar() {
+//  }
+//
+//  @Test
+//  void setMainDriver() {
+//  }
+//
+//  @Test
+//  void removeMainDriver() {
+//  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/rest/unit/CarComponentPairControllerUnitTest.java b/car/src/test/java/cz/muni/pa165/car/rest/unit/CarComponentPairControllerUnitTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..017d1c883423cc8b88be467190af0c611202c13e
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/rest/unit/CarComponentPairControllerUnitTest.java
@@ -0,0 +1,49 @@
+package cz.muni.pa165.car.rest.unit;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import cz.muni.pa165.car.rest.CarComponentPairController;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.web.servlet.MockMvc;
+
+@WebMvcTest(controllers = CarComponentPairController.class)
+@AutoConfigureMockMvc(addFilters = false)
+@ExtendWith(MockitoExtension.class)
+class CarComponentPairControllerUnitTest {
+
+  @Autowired
+  private MockMvc mockMvc;
+
+  @MockBean
+  private CarComponentPairController controller;
+
+  @Autowired
+  private ObjectMapper objectMapper;
+
+//  @BeforeEach
+//  void setUp() {
+//  }
+//
+//  @AfterEach
+//  void tearDown() {
+//  }
+//
+//  @Test
+//  void addComponent() {
+//  }
+//
+//  @Test
+//  void removeComponent() {
+//  }
+//
+//  @Test
+//  void getAllComponentsOfCar() {
+//  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/rest/unit/CarControllerUnitTest.java b/car/src/test/java/cz/muni/pa165/car/rest/unit/CarControllerUnitTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..7e409a3e02484a35e61343714d8146bdc03a399f
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/rest/unit/CarControllerUnitTest.java
@@ -0,0 +1,148 @@
+package cz.muni.pa165.car.rest.unit;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import cz.muni.pa165.car.rest.CarController;
+import cz.muni.pa165.car.rest.CarDriverPairController;
+import cz.muni.pa165.car.service.CarService;
+import cz.muni.pa165.common_library.dtos.CarRequestDto;
+import cz.muni.pa165.common_library.dtos.CarResponseDto;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.runner.RunWith;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.when;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(SpringRunner.class)
+@WebMvcTest(CarController.class)
+class CarControllerUnitTest {
+
+  @Autowired
+  private MockMvc mockMvc;
+
+  @MockBean
+  private CarService carServiceMock;
+
+  @Autowired
+  private ObjectMapper objectMapper;
+
+  private static List<Long> componentIds;
+  private static List<Long> driverIds;
+  private static CarRequestDto carRequestDto;
+  private static CarResponseDto carResponseDto;
+
+  @BeforeEach
+  void initializeTestObjects() {
+    componentIds = List.of(1L, 2L, 3L, 4L);
+    driverIds = List.of(11L, 22L, 33L, 44L);
+
+    carRequestDto = CarRequestDto.builder()
+        .componentIds(componentIds)
+        .driverIds(driverIds)
+        .mainDriverId(2L)
+        .build();
+
+    carResponseDto = CarResponseDto.builder()
+        .id(anyLong())
+        .componentIdsNames(componentIds)
+        .driverIdsNames(driverIds)
+        .mainDriverId(2L)
+        .build();
+  }
+
+  @Test
+  void notExistingPath() throws Exception {
+    mockMvc.perform(put("/invalidPath"))
+        .andExpect(status().isNotFound());
+  }
+
+  @Test
+  void createCarTest() throws Exception {
+    given(carServiceMock.postCar(carRequestDto)).willReturn(carResponseDto);
+
+    mockMvc.perform(post("/car/")
+            .contentType(MediaType.APPLICATION_JSON)
+            .content(objectMapper.writeValueAsString(carRequestDto)))
+        .andExpect(status().isOk());
+        //.andExpect(jsonPath("$.componentIdsNames").value(carResponseDto.getComponentIdsNames()))
+        //.andExpect(jsonPath("$.driverIdsNames").value(carResponseDto.getDriverIdsNames()))
+        //.andExpect(jsonPath("$.mainDriverId").value(carResponseDto.getMainDriverId()))
+        //.andReturn();
+  }
+
+  @Test
+  void deleteExistingCarTest() throws Exception {
+    given(carServiceMock.postCar(carRequestDto)).willReturn(carResponseDto);
+    given(carServiceMock.deleteById(anyLong())).willReturn("");
+
+    mockMvc.perform(post("/car/")
+            .contentType(MediaType.APPLICATION_JSON)
+            .content(objectMapper.writeValueAsString(carRequestDto)))
+        .andExpect(status().isOk());
+
+    mockMvc.perform(delete("/car/")
+            .param("carId", String.valueOf(1L))
+            .contentType(MediaType.APPLICATION_JSON))
+        .andExpect(status().isOk());
+  }
+
+  @Test
+  void deleteNonExistingCarTest() throws Exception {
+    given(carServiceMock.postCar(carRequestDto)).willReturn(carResponseDto);
+    given(carServiceMock.deleteById(anyLong())).willReturn("");
+
+    mockMvc.perform(delete("/car/")
+            .param("carId", String.valueOf(-1L))
+            .contentType(MediaType.APPLICATION_JSON))
+        .andExpect(status().isOk());
+  }
+
+  @Test
+  void getCarTest() throws Exception {
+    given(carServiceMock.postCar(carRequestDto)).willReturn(carResponseDto);
+    given(carServiceMock.getCarById(anyLong())).willReturn(carResponseDto);
+
+    mockMvc.perform(post("/car/")
+            .contentType(MediaType.APPLICATION_JSON)
+            .content(objectMapper.writeValueAsString(carRequestDto)))
+        .andExpect(status().isOk());
+
+    mockMvc.perform(get("/car/")
+            .param("carId", String.valueOf(1L))
+            .contentType(MediaType.APPLICATION_JSON))
+        .andExpect(status().isOk());
+  }
+
+  @Test
+  void getAllCarsTest() throws Exception {
+    given(carServiceMock.getAllCars()).willReturn(List.of(carResponseDto));
+
+    mockMvc.perform(get("/car/all")
+            .contentType(MediaType.APPLICATION_JSON))
+        .andExpect(status().isOk());
+  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/rest/unit/CarDriverPairControllerUnitTest.java b/car/src/test/java/cz/muni/pa165/car/rest/unit/CarDriverPairControllerUnitTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..efb97a2ed8b158c1ec61f469fe2298a8ac65fd79
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/rest/unit/CarDriverPairControllerUnitTest.java
@@ -0,0 +1,59 @@
+package cz.muni.pa165.car.rest.unit;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import cz.muni.pa165.car.rest.CarController;
+import cz.muni.pa165.car.rest.CarDriverPairController;
+import org.junit.jupiter.api.AfterEach;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.web.servlet.MockMvc;
+
+@WebMvcTest(controllers = CarDriverPairController.class)
+@AutoConfigureMockMvc(addFilters = false)
+@ExtendWith(MockitoExtension.class)
+class CarDriverPairControllerUnitTest {
+
+  @Autowired
+  private MockMvc mockMvc;
+
+  @MockBean
+  private CarDriverPairController controller;
+
+  @Autowired
+  private ObjectMapper objectMapper;
+
+//  @BeforeEach
+//  void setUp() {
+//  }
+//
+//  @AfterEach
+//  void tearDown() {
+//  }
+//
+//  @Test
+//  void assignDriverToCar() {
+//  }
+//
+//  @Test
+//  void unassignDriverFromCar() {
+//  }
+//
+//  @Test
+//  void getAllDriversOfCar() {
+//  }
+//
+//  @Test
+//  void setMainDriver() {
+//  }
+//
+//  @Test
+//  void removeMainDriver() {
+//  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/service/CarComponentPairServiceImplTest.java b/car/src/test/java/cz/muni/pa165/car/service/CarComponentPairServiceImplTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..639d83795c8b410ac23ef20be2078dc103c34d3c
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/service/CarComponentPairServiceImplTest.java
@@ -0,0 +1,31 @@
+package cz.muni.pa165.car.service;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class CarComponentPairServiceImplTest {
+
+  @BeforeEach
+  void setUp() {
+  }
+
+  @Test
+  void addComponent() {
+  }
+
+  @Test
+  void removeComponent() {
+  }
+
+  @Test
+  void getAllComponentsOfCar() {
+  }
+
+  @Test
+  void getComponentById() {
+  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/service/CarComponentPairServiceTest.java b/car/src/test/java/cz/muni/pa165/car/service/CarComponentPairServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..dcf039e309315a8487aadb4ba8e7e695847657b9
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/service/CarComponentPairServiceTest.java
@@ -0,0 +1,24 @@
+package cz.muni.pa165.car.service;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class CarComponentPairServiceTest {
+
+  @BeforeEach
+  void setUp() {
+  }
+
+  @Test
+  void addComponent() {
+  }
+
+  @Test
+  void removeComponent() {
+  }
+
+  @Test
+  void getAllComponentsOfCar() {
+  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/service/CarDriverPairServiceImplTest.java b/car/src/test/java/cz/muni/pa165/car/service/CarDriverPairServiceImplTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d36f0436a2ae9f17f8bde721d4f027579d3145a
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/service/CarDriverPairServiceImplTest.java
@@ -0,0 +1,36 @@
+package cz.muni.pa165.car.service;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class CarDriverPairServiceImplTest {
+
+  @BeforeEach
+  void setUp() {
+  }
+
+  @Test
+  void assignDriverToCar() {
+  }
+
+  @Test
+  void unassignDriverFromCar() {
+  }
+
+  @Test
+  void getAllDriversOfCar() {
+  }
+
+  @Test
+  void setMainDriver() {
+  }
+
+  @Test
+  void removeMainDriver() {
+  }
+
+  @Test
+  void getDriverById() {
+  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/service/CarDriverPairServiceTest.java b/car/src/test/java/cz/muni/pa165/car/service/CarDriverPairServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..691b7bc75feeb75fa96046557e7d876c5d603786
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/service/CarDriverPairServiceTest.java
@@ -0,0 +1,32 @@
+package cz.muni.pa165.car.service;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class CarDriverPairServiceTest {
+
+  @BeforeEach
+  void setUp() {
+  }
+
+  @Test
+  void assignDriverToCar() {
+  }
+
+  @Test
+  void unassignDriverFromCar() {
+  }
+
+  @Test
+  void getAllDriversOfCar() {
+  }
+
+  @Test
+  void setMainDriver() {
+  }
+
+  @Test
+  void removeMainDriver() {
+  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/service/CarServiceImplTest.java b/car/src/test/java/cz/muni/pa165/car/service/CarServiceImplTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b1b91c0864758733e9427d1f21843ed85f4f97a
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/service/CarServiceImplTest.java
@@ -0,0 +1,44 @@
+package cz.muni.pa165.car.service;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class CarServiceImplTest {
+
+  @BeforeEach
+  void setUp() {
+  }
+
+  @Test
+  void postCar() {
+  }
+
+  @Test
+  void getCarById() {
+  }
+
+  @Test
+  void getAllCars() {
+  }
+
+  @Test
+  void deleteById() {
+  }
+
+  @Test
+  void carDtoConverter() {
+  }
+
+  @Test
+  void carConverterToDto() {
+  }
+
+  @Test
+  void getDriverById() {
+  }
+
+  @Test
+  void getComponentById() {
+  }
+}
\ No newline at end of file
diff --git a/car/src/test/java/cz/muni/pa165/car/service/CarServiceTest.java b/car/src/test/java/cz/muni/pa165/car/service/CarServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..309b6388aa2962b9d4efd13438eb804d9acf03d0
--- /dev/null
+++ b/car/src/test/java/cz/muni/pa165/car/service/CarServiceTest.java
@@ -0,0 +1,28 @@
+package cz.muni.pa165.car.service;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class CarServiceTest {
+
+  @BeforeEach
+  void setUp() {
+  }
+
+  @Test
+  void postCar() {
+  }
+
+  @Test
+  void getCarById() {
+  }
+
+  @Test
+  void getAllCars() {
+  }
+
+  @Test
+  void deleteById() {
+  }
+}
\ No newline at end of file