Как мне написать модульный тест для метода установки, у которого нет метода получения? - PullRequest
0 голосов
/ 29 октября 2019

У меня есть класс, который выглядит следующим образом

public class Assignment {

   protected String AssName;

   public void SetAssSpec(String theSpec){

     this.AssSpec = theSpec;

   }

}

Вот мой класс тестирования

class AssignmentTest {

   @Test
   void testSetAssSpec(){

       String assignmentName = "CSE101";
       Assignment cseAssigment = new Assignment();
       cseAssigment.SetAssSpec(String assignmentName);

       //Now what?

   }


} 

Так как нет метода получения.
Другой способ получить доступ к установленной строке - это cseAssigment.AssName, но проблема в том, что AssName защищено, поэтому я не могу получить к нему доступ.
Как бы я его протестировал? Я новичок в тестировании и Junit. Итак, скажите, пожалуйста, имеет ли смысл хотя бы ?

Ответы [ 2 ]

2 голосов
/ 29 октября 2019

Вы можете объявить локальный подкласс, который имеет геттер:

@Test
void testSetAssSpec(){
   class SubAssigment extends Assignment {
     String getter() { return AssName; }
   }

   String assignmentName = "CSE101";
   SubAssigment cseAssigment = new SubAssigment();
   cseAssigment.SetAssSpec(String assignmentName);

   assertEquals(assignmentName, cseAssignment.getter());
}

Но, как указывает Kayaman , вам, вероятно, действительно не нужнопроверить, что назначение Java работает.

0 голосов
/ 29 октября 2019

Тестирование методов-получателей было бы излишним, но если вы когда-нибудь захотите проверить / протестировать значение приватных переменных в объекте без методов-получателей, вы можете использовать отражение

Field f = obj.getClass().getDeclaredField("AssName"); //NoSuchFieldException
f.setAccessible(true);
String assignmentName = (String) f.get(obj); 

...