Få stien til katalogen / src / test / resources i JUnit

1. Oversikt

Noen ganger under enhetstesting kan det hende vi må lese noen filer fra klassestien eller sende en fil til et objekt som testes. Eller vi kan ha en fil i src / test / ressurser med data for stubber som kan brukes av biblioteker som WireMock.

I denne veiledningen, vi viser hvordan du leser banen til / src / test / ressurser katalog.

2. Maven-avhengigheter

Først må vi legge til JUnit 5 i våre Maven-avhengigheter:

 org.junit.jupiter junit-jupiter-motor 5.4.2 

Vi finner den nyeste versjonen av JUnit 5 på Maven Central.

2. Bruke java.io. fil

Den enkleste tilnærmingen bruker en forekomst av java.io. fil klasse å lese / src / test / ressurser katalog, ved å ringe til getAbsolutePath () metode:

Strengsti = "src / test / resources"; Filfil = ny fil (bane); Streng absolutePath = file.getAbsolutePath (); System.out.println (absolutePath); assertTrue (absolutePath.endsWith ("src / test / resources"));

Noter det denne banen er i forhold til gjeldende arbeidskatalog, som betyr prosjektkatalogen.

La oss se et eksempel på utdata når du kjører testen på macOS:

/Users/user.name/my_projects/tutorials/testing-modules/junit-5-configuration/src/test/resources

3. Bruke Sti

Deretter kan vi bruke Sti klasse, som ble introdusert i Java 7.

Først må vi kalle en statisk fabrikkmetode - Paths.get (). Så konverterer vi Sti til Fil. Til slutt trenger vi bare å ringe getAbsolutePath (), som i forrige eksempel:

Sti resourceDirectory = Paths.get ("src", "test", "resources"); Streng absolutePath = resourceDirectory.toFile (). GetAbsolutePath (); System.out.println (absolutePath); Assert.assertTrue (absolutePath.endsWith ("src / test / resources")); 

Og vi ville få samme utgang som i forrige eksempel:

/Users/user.name/my_projects/tutorials/testing-modules/junit-5-configuration/src/test/resources

4. Bruke ClassLoader

Til slutt kan vi også bruke en ClassLoader:

String resourceName = "eksempel_resource.txt"; ClassLoader classLoader = getClass () getClassLoader (); Filfil = ny fil (classLoader.getResource (resourceName) .getFile ()); Streng absolutePath = file.getAbsolutePath (); System.out.println (absolutePath); assertTrue (absolutePath.endsWith ("/ example_resource.txt")); 

Og la oss ta en titt på utgangen:

/Users/user.name/my_projects/tutorials/testing-modules/junit-5-configuration/target/test-classes/example_resource.txt

Merk at denne gangen har vi en /junit-5-configuration/target/test-classes/example-resource.txt fil. Det skiller seg når vi sammenligner resultatet med de tidligere metodene.

Dette er fordi de ClassLoader ser etter ressursene på klassestien. I Maven blir de kompilerte klassene og ressursene lagt i /mål/ katalog. Derfor fikk vi denne gangen en vei til en klassesti-ressurs.

5. Konklusjon

For å oppsummere, i denne raske opplæringen har vi diskutert hvordan du leser en / src / test / ressurser katalog i JUnit 5.

Avhengig av våre behov, kan vi oppnå målet vårt med flere metoder: ved å bruke Fil, Stier, eller ClassLoader klasser.

Som alltid kan du finne alle eksemplene våre på GitHub-prosjektet vårt!


$config[zx-auto] not found$config[zx-overlay] not found