Myślę, że powinieneś mieć test jednostkowy z bieżącym zachowaniem, aw komentarzach dodaj odpowiedni test i właściwe zachowanie. Przykład:
@Test
public void test() {
// this is wrong, it should be fixed some time
Assert.assertEquals(2, new Calculator().plus(2,2));
// this is the expected behaviour, replace the above test when the fix is available
// Assert.assertEquals(4, new Calculator().plus(2, 2));
}
W ten sposób, gdy poprawka jest dostępna, kompilacja zakończy się niepowodzeniem, zauważając, że test zakończył się niepowodzeniem. Kiedy spojrzysz na test, będziesz wiedział, że zmieniłeś zachowanie i test musi zostać zaktualizowany.
EDYCJA: Jak powiedział kapitan Man, w dużych projektach nie zostanie to naprawione w najbliższym czasie, ale ze względu na dokumentację oryginalna odpowiedź jest lepsza niż nic.
Lepszym sposobem na to jest zduplikowanie bieżącego testu, dzięki czemu klon potwierdzi prawidłową rzecz i @Ignore
wyświetli komunikat, np.
@Test
public void test() {
Assert.assertEquals(2, new Calculator().plus(2,2));
}
@Ignore("fix me, Calculator is giving the wrong result, see ticket BUG-12345 and delete #test() when fixed")
@Test
public void fixMe() {
Assert.assertEquals(4, new Calculator().plus(2, 2));
}
Jest to zgodne z konwencją w twoim zespole, aby zmniejszyć liczbę @Ignore
testów d. W ten sam sposób, w jaki robisz to, wprowadzając lub zmieniając test w celu odzwierciedlenia błędu, z tym że nie zawiedziesz kompilacji, jeśli jest to krytyczne dla twojego zespołu, tak jak OP powiedział, że poprawka nie zostanie uwzględniona w bieżącej wersji .