модульнае тэставанне сетэраў і здабытчыкамі

Настаўнік хацеў, каб зрабіць комплексны тэст прылады. Для мяне гэта будзе першы раз, калі я выкарыстоўваю JUnit. Я зьбянтэжаны аб тэставанні набору і атрымаць метады. Як вы думаеце, я павінен праверыць іх? Калі адказ так; гэты код дастаткова для тэставання?

  public void testSetandGet(){
    int a = 10;
    Class firstClass = new Class();
    firstClass.setValue(10);
    int value = firstClass.getValue();
    Assert.assertTrue("Error", value==a);
  }

У маім кодзе, я думаю, што калі ёсць памылка, мы не можам ведаць, што памылка вываду з-сетэр або геттер.

9
Спытаеце свой настаўнік, калі вы павінны праверыць іх. Бо гэта гатункавы, яго/яе меркаванне з'яўляецца адзіным, што мае значэнне.
дададзена аўтар thegrinner, крыніца
Акрамя таго, было б лепш, калі вы выкарыстоўваеце firstClass.setValue (а); замест жорсткага кадавання 10 .
дададзена аўтар Luiggi Mendoza, крыніца
Разгледзім з дапамогай Assert.assertEquals (а, значэнне).
дададзена аўтар Andy Thomas, крыніца

6 адказы

Я б сказаў, не пісаць модульныя тэсты для сетэраў і здабытчыкаў, калі вашы сетэра і здабытчыка ўтрымліваюць логіку праграмы (тое, што атрыманне вылічаецца як сетэр або геттер завецца).

У рэальным праекце вы будзеце мець больш, чым уволю праграму логіка для модульнага тэставання без неабходнасці тэставаць нешта трывіяльнае, як сетэра і здабытчыка.

18
дададзена
Часам людзі проста патрабуюць тэсту толькі ў плане ахопу кода. Вядома, вы можаце аўтаматызаваць тэставанне для аксессоров, але ...
дададзена аўтар Konstantin Yovkov, крыніца
Магчыма, на самай справе. Дазваляе сказаць, што гэта не пашкодзіць код Накрыйце аксессоров, пасля таго, як вы цалкам праверыць логіку. :)
дададзена аўтар Konstantin Yovkov, крыніца
Праўда, але, але гэта на самай справе можа быць дрэнна. Разгледзім гэта: Вы напісалі модульныя тэсты для атрымання і ўстаноўкі для ўсіх класаў, але не для вашай важнай логікі. Ваша пакрыццё коды высока, але ваша верагоднасць памылак высокая, як добра.
дададзена аўтар cyon, крыніца
дзякуй за дапамогу :)
дададзена аўтар avocadocadevra, крыніца

Рой Osherove ў сваёй знакамітай кнізе "Мастацтва модульнага тэставання кажа:

<�Р> Уласцівасці (геттеров/сетары ў Java) з'яўляюцца добрымі прыкладамі кода, якія, як правіла, не ўтрымлівае ніякай логікі, і не патрабуе тэставання. Але беражыцеся:., Як толькі вы дадаць любую праверку ва ўласнасць, вы хочаце, каб пераканацца, што логіка выпрабоўваецца

Вы правяраеце, што вы ўсталявалі, можа быць таксама «атрымаць». Змяніць Сцвярджаць заяву на:

<�Код> Assert.assertTrue (а, праўда);

Акрамя таго, вы павінны перадаць а , калі вы збіраецеся яго выкарыстоўваць.

3
дададзена

Я думаю, што гэта важна, калі ў вас ёсць нейкія ўмовы ў ім. Для Exemple, калі ён вяртае выключэнне, калі ИНТ павінен быць станоўчым або некаторымі іншымі ўмовамі. Але калі гэта проста пераменная саступка, я не думаю, што гэта карысна ... Гэта ж для здабытчыкаў.

3
дададзена

Калі б я цябе, я б першы набор некаторы значэнне ўласцівасці ў класе я тэстуюць, і тады я буду пераканацца, што атрымаць метад вяртае тое ж значэнне ,

public void testSetandGet(){
    int a = 10;
    Class firstClass = new Class();
    firstClass.setValue(10);
    int value = firstClass.getValue();
    Assert.assertEquals(value, a);
}
2
дададзена

Калі вы хочаце, каб праверыць яго можна часова зрабіць зменныя грамадскасці, а затым:

firstClass.setMyInt(5);
Assert.assertTrue(5, firstClass.myInt);

Аднак метады атрымання і ўстаноўкі могуць быць аўтаматычна, яны, як правіла, утрымліваюць толькі адзін радок у метадзе, і калі яны выклікаюць ваш код на правал вы, верагодна, маюць вялікія праблемы. Гэта не звычайная практыка з модульнага тэставання затлумляцца тэставання метады атрымання і ўстаноўкі, і вы можаце пазбегнуць іх тэставання і ваш модульнае тэставанне ўсё роўна будзе вычарпальным.

1
дададзена

Dont модульнага тэставання усё, што належыць на рэчы па-за класа іспытываемый працаваць.

Калі вашы метады атрымання і ўстаноўкі трывіяльная, то яны могуць не толькі калі асноўны JVM/кампілятар не можа - так што вы на самай справе тэставання JVM/кампілятар, а не код.

1
дададзена
Яны могуць пацярпець няўдачу, калі хтосьці аблажаўся і ўносіць змены ў іх ненаўмысна. Вядома, гэта невялікі шанец і сетары/здабытчыкам не павінна быць першае, што тэстуецца, але можа крыху дапамагчы калі ў вас ёсць усе бізнес-логіка тэставанне ўжо.
дададзена аўтар Kevin M, крыніца