Mam test komunikacji przez gniazdo TCP, w którym oczekuję, że serwer nie odpowie w określonym przedziale czasu, kiedy wyślę określoną wiadomość.JUnit test na spodziewany limit czasu
Zachowanie serwerów to nic, co mogę kontrolować.
Wiem, że nie można ukończyć testu, jeśli nie ukończyło go w określonym przedziale czasowym. Ale jak mogę postąpić odwrotnie, sprawić, by nie zakończyło się to w ramach czasowych?
Mogę użyć @Test (timeout=1000)
, aby wykonać test, jeśli nie zakończy się on w ciągu sekundy.
Ale przy użyciu Junit 4, czy istnieje funkcja do sprawdzenia, czy przewidywany czas oczekiwania jest dodatni? To znaczy. Test zakończy się niepowodzeniem, jeśli zostanie zakończony w określonym przedziale czasowym, a jeśli nie zostanie zaliczony?
Czy Timeout wyjątek? Jeśli tak, możesz przetestować wyjątek dotyczący limitu czasu. – Compass
Uważaj na to, nie sądzę, że możesz "oczekiwać" wyjątku wyrzuconego przez 'timeout'. Możesz użyć timera lub po prostu sprawdzić czas operacji, a następnie, jeśli przekroczył on pożądany czas, wyrzuć wyjątek, którego się spodziewasz. Nie wydaje się jednak bardzo efektywny. – Zircon
Co dokładnie jest celem testu? Jeśli wychodzi poza zasięg twojego kodu w dół do serwera, nie jestem pewien, jak korzystne jest testowanie na twoim końcu. Jeśli spodziewasz się, że twój kod poradzi sobie z przekroczeniem limitu czasu, powinieneś po prostu kpić z gniazda i zrzucić wyjątek. – Compass