diff --git a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/util/FileHelper.java b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/util/FileHelper.java
index 626915a..2627520 100644
--- a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/util/FileHelper.java
+++ b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/util/FileHelper.java
@@ -12,9 +12,7 @@
  ********************************************************************************/
 package org.eclipse.openk.sp.util;
 
-import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -117,26 +115,4 @@
 		return propValue;
 	}
 
-	/** private method to convert a file to byte array. */
-	public byte[] convertFileToByteArray(File f) throws Exception {
-
-		byte[] data = null;
-
-		try (InputStream ios = new FileInputStream(f)) {
-
-			ByteArrayOutputStream ous = null;
-
-			byte[] buffer = new byte[4096];
-			ous = new ByteArrayOutputStream();
-
-			int read = 0;
-			while ((read = ios.read(buffer)) != -1) {
-				ous.write(buffer, 0, read);
-			}
-
-			data = ous.toByteArray();
-		}
-
-		return data;
-	}
 }
diff --git a/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/dto/StandbyScheduleDtoTest.java b/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/dto/StandbyScheduleDtoTest.java
index 2e337ab..926ac64 100644
--- a/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/dto/StandbyScheduleDtoTest.java
+++ b/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/dto/StandbyScheduleDtoTest.java
@@ -13,6 +13,7 @@
 package org.eclipse.openk.sp.dto;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -21,9 +22,16 @@
 import org.eclipse.openk.sp.dto.planning.PlanRowsDto;
 import org.eclipse.openk.sp.dto.planning.StandbyScheduleFilterDto;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.runners.MockitoJUnitRunner;
 
+@RunWith(MockitoJUnitRunner.class)
 public class StandbyScheduleDtoTest {
 
+	@InjectMocks
+	StandbyScheduleDto standbyScheduleDto;
+
 	@Test
 	public void getSet() {
 		StandbyScheduleDto dto = new StandbyScheduleDto();
@@ -41,4 +49,27 @@
 
 	}
 
+	@Test
+	public void countTest() {
+		Long groupId = 1L;
+
+		StandbyScheduleBodySelectionDto stbyBody = new StandbyScheduleBodySelectionDto();
+		StandbyGroupSelectionDto sbg = new StandbyGroupSelectionDto();
+		sbg.setTitle("title");
+		sbg.setId(groupId);
+		stbyBody.setStandbyGroup(sbg);
+
+		int startSize = standbyScheduleDto.groupSize(groupId);
+		standbyScheduleDto.count(stbyBody);
+		int endSize = standbyScheduleDto.groupSize(groupId);
+
+		assertNotEquals(startSize, endSize);
+
+		standbyScheduleDto.count(stbyBody);
+		endSize = standbyScheduleDto.groupSize(groupId);
+
+		assertEquals(startSize + 2, endSize);
+
+	}
+
 }
diff --git a/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/dto/UserSelectionDtoTest.java b/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/dto/UserSelectionDtoTest.java
index 6bcaf1b..bf6b669 100644
--- a/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/dto/UserSelectionDtoTest.java
+++ b/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/dto/UserSelectionDtoTest.java
@@ -67,5 +67,17 @@
 
 		u.setUserRole("role");
 		assertEquals("role", u.getUserRole());
+
+		AddressDto addressDto = new AddressDto();
+		u.setPrivateAddress(addressDto);
+		assertEquals(addressDto, u.getPrivateAddress());
+
+		ContactDataDto contactDataDto = new ContactDataDto();
+		u.setPrivateContactData(contactDataDto);
+		assertEquals(contactDataDto, u.getPrivateContactData());
+
+		u.setBusinessContactData(contactDataDto);
+		assertEquals(contactDataDto, u.getBusinessContactData());
+
 	}
 }
