Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests for loading content #114

Open
Rivixer opened this issue Apr 26, 2023 · 2 comments
Open

Tests for loading content #114

Rivixer opened this issue Apr 26, 2023 · 2 comments
Assignees
Labels
difficulty: 4 Killer task priority: 1 This doesn't have to be done unless there are no other tasks scope: testers This task refers to group of testers type: unittest Unit test task

Comments

@Rivixer
Copy link
Owner

Rivixer commented Apr 26, 2023

Oczekuje na:


Napisać testy jednostkowe, które sprawdzą, czy wszystkie grafiki, czcionki itp. ładują się poprawnie.

Zadanie bardzo wymagające, zapewne dla kilku osób.
Możliwe, że deweloperzy będą potrzebni do zmodyfikowania kodu w celu łatwiejszego testowania.

@Rivixer Rivixer added scope: testers This task refers to group of testers state: queued Waits for another task to finish (queued) type: unittest Unit test task difficulty: 4 Killer task priority: 1 This doesn't have to be done unless there are no other tasks labels Apr 26, 2023
@Natkapietruszki213 Natkapietruszki213 self-assigned this Apr 27, 2023
@piecharka piecharka self-assigned this Apr 27, 2023
@Tomczon Tomczon self-assigned this Apr 27, 2023
@Rivixer Rivixer removed the state: queued Waits for another task to finish (queued) label Apr 30, 2023
@Rivixer
Copy link
Owner Author

Rivixer commented Apr 30, 2023

Pisania kodu nie będzie dużo, ale trzeba opracować plan jak to zrobić.

Naszym celem jest wywołanie na obiekcie GameScene (a przynajmniej na razie) poniższej funkcji:

/// <summary>
/// Loads the content of the controller and all its children.
/// </summary>
/// <param name="content">
/// The ContentManager used for loading content.
/// </param>
public void LoadAll(ContentManager content);

Testy powinny przejść, jeśli wszystkie grafiki załadują się poprawnie.
Jeśli choć jedna grafika nie załaduje się i wywali wyjątek, reszta testu nie musi być kontynuowana.

Trudność tego zadania polega na tym, że musimy zmockować obiekt ContentManager (co wiąże się też z innymi mockami klas, które ten manager wymaga), aby udawało, że ładuje te grafiki.

Kolejnym problemem jest System.InvalidOperationException: No Graphics Device Service?.
Występuje on podczas ładowania grafik, gdy nie mamy sprecyzowanego urządzenia graficznego (czyli np. właśnie podczas testów).
Proponowane przeze mnie możliwe obejścia (ale nie wiem czy zadziałają):

  • spróbować zmockować ten obiekt
  • zmockować funkcję Load(ContentManager), aby wywoływana była w try-catch, i w przypadku pojawienia się wyjątku No Graphics Device Service - kontynuować testy (ten błąd wyskakuje jak już grafika się załaduje, co nas interesuje)
  • inne rozwiązanie (duża dowolność, ważne by działało i było ładnie napisane)

Przetestować, czy testy przechodzą na Linuxie.

@Rivixer
Copy link
Owner Author

Rivixer commented May 7, 2023

Od commita 4db1272 doszło ładowanie dźwięków. Możliwe, że podczas próby załadowania ich podczas testów wyskoczy inny wyjątek, np. związany z brakiem karty dźwiękowej. Należy zwrócić na to uwagę i w razie czego wymyślić sposób na obejście tego.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
difficulty: 4 Killer task priority: 1 This doesn't have to be done unless there are no other tasks scope: testers This task refers to group of testers type: unittest Unit test task
Projects
None yet
Development

No branches or pull requests

4 participants