Chciałbym dodać niestandardowe asercje do naszej bazy kodu, które poprawnie ukrywają się przed śledzeniem awarii. Wiem, jak napisać publiczną statyczną metodę, którą ktoś może statycznie importować. Wiem, jak używać starych twierdzeń lub wyrzucać nowe AssertionError
.Tworzenie niestandardowych asercji JUnit4, które nie są wyświetlane w ścieżce niepowodzenia
To, czego nie mogę wymyślić, to zachować nowe niestandardowe asercje z śledzenia awarii. Przyzwyczailiśmy się do pierwszego trafienia w śladzie niepowodzenia NIE będącym samym kodem asercji, ale kodem testowym, który wywołał asercję.
Wiem, że istnieje atrybut filtertrace
, który kontroluje filtrowanie stosu, ale nie mogę znaleźć żadnej dobrej dokumentacji, co bym musiał zrobić, aby dodać nowe asercje do filtra.
Przykładem tego, co chcę zrobić:
package testassertions;
import static newassertions.MyAssertions.myAssertTrue;
import org.junit.Test;
public class ExampleTest {
@Test
public void myAssertTruePassing() { myAssertTrue(true); }
@Test
public void myAssertTrueFailing() { myAssertTrue(false); }
}
package newassertions;
import static org.junit.Assert.assertTrue;
public class MyAssertions {
public static void myAssertTrue(boolean b) {
assertTrue(b);
}
}
Failure śladu myAssertTrueFailing() pokazuje:
java.lang.AssertionError
at newassertions.MyAssertions.myAssertTrue(MyAssertions.java:8)
at testassertions.ExampleTest.myAssertTrueFailing(ExampleTest.java:12)
Muszę go tylko do pokazu:
java.lang.AssertionError
at testassertions.ExampleTest.myAssertTrueFailing(ExampleTest.java:12)
To brakuje niektórych średników na górze, ale wygląda bardzo obiecująco. – CandiedOrange
Re. edytuj komentarz: Darn tych grubych palców gremliny. W każdym razie wygląda to dobrze. Kusi mnie, aby dodać kod konfiguracji, który wyłączałby filtr, który powinien być najczystszym, aby mógł zobaczyć prawdziwy ślad stosu, ale pozostawiłby domyślne rozwiązanie tego kodu. Oznacza to, że jeśli nie otrzymam uprawnień do zmiany konfiguracji, mogę filtrować jeden z naszych pakietów. Wystarczy mieć szansę, aby to zakodować w pracy, aby przetestować go w naszym środowisku. – CandiedOrange