Nekem azért favágás a teszt megírása, mert amikor ezt begépeltem, akkor a gépnek már minden szükséges információja megvan ahhoz, hogy befejezze a teszt megírását:
[Fact] public void Returns_True_For_Odd_Numbers() {
Hány ilyet írsz munkaidőben? Szerintem ha szar, nempontos az implementáció, de a generált unit tesztben benne marad a hiba, akkor a unit teszt többet árt, mint használ.
Ez a capitalize metódus hasonlóan h'ót egyszerű a fentihez képest, aztán mégiscsak rágenerálja a ChatGPT néha, hogy
@Test
public void testCapitalize() {
// Test case 1: Normal input
String input1 = "hello";
String expected1 = "Hello";
String result1 = StringUtil.capitalize(input1);
assertEquals(expected1, result1);
// Test case 2: Empty string
String input2 = "";
assertThrows(IndexOutOfBoundsException.class, () -> StringUtil.capitalize(input2));
// ...
}
Aztán ha úgy kerülök oda javítani, hogy hm, kifejezetten erre az esetre van test case, akkor elgondolkozom azon, hogy én vagyok-e a hülye. Pedig nem, a fenti egy szar implementáció, javítva is lett, és a generált teszt is esélyesen szar lenne rá. Ahogy elismerem, arra is van esély, hogy a ChatGPT a jó tesztet generálja le, és ne a hibára/felesleges edge-case-re találjon rá - de ahogy bonyolódik az üzleti logika, úgy egyre nagyobb eséllyel lesznek gépiesen ráírt tesztek. És ezeknek nincs hozzáadott értéke. Szerintem sokkal több ilyen, a második keycloak kódhoz hasonló dolgot írsz te is munkaidőben, mint páros szám eldöntő dolgot...
Ha az LLM helyett a junior kolléga ír 500 sort, azt jobban átnézed?
Attól függ. Ha a junior kolléga a production kódja mellé írta, akkor igen. Ha csak gépiesen oda van adva neki, hogy „itt a prod kód Senior Sándortól, legyen rá a coverage 100%, mert akkor boldog a PM”, akkor nem. Lesz szíves Senior Sándor megírni a kis tesztjeit.
szerk.: Ha a junior kolléga a production kódja mellé írta, akkor igen. -> ha a junior kolléga unit tesztjei 500 sor, akkor lehet, hogy túl nagy feladatott kapott elsőre.