Guide:Help, my tests arent running: Unterschied zwischen den Versionen

Aus TUTI
KKeine Bearbeitungszusammenfassung
(added fix to run tests via build.gradle play buttons)
 
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
This quick guide shall help you fix the most common JUnit errors.
This quick guide shall help you fix the most common JUnit errors.


It has been written for IntelliJ - might also work similarly with other IDEs, but might also not.
It has been written for IntelliJ - might work similarly with other IDEs, but might also not.


In case your tests still don't work after going through these steps (please try to run your tests after each section and see if the issue has been resolved), open a Zulip thread.
In case your tests still don't work after going through these steps (please try to run your tests after each section and see if the issue has been resolved), open a Zulip thread.
==A: Issues within the Test classes==
==A: Issues within the Test classes==
General things to check:
General things to check:
# Does the package name at the top of each test class correspond to the actual folder structure?
# Does the package name at the top of each test class correspond to the actual folder structure?
 
* If a class says <code>package pg.dp;</code> for example, but is sitting in the folder <code>pg</code>, remove the <code>.dp</code>. If it says <code>package pg;</code> instead, but is sitting in <code>pg/dp</code>, try adding <code>.dp</code> to the <code>package</code>.
* If a class says `package pg.dp;` for example, but is sitting in the folder `pg`, remove the `dp`. If it says `package pg` instead, but is sitting in `pg/dp`, try adding `.dp` to the `package`.
# Is the test trying to import libraries you need to add first?
 
* Check the <code>import</code> section and hover over red import statements. You should get a suggestion to import the corresponding library. Click it.
2. Is the test trying to import libraries you need to add first?
# Are the tests relying on classes you don't have in your <code>src/pgdp.taskname</code> folder? Or on classes in the <code>testfoldername</code> folder?
  - Check the `import` section and hover over red import statements. You should get a suggestion to import the corresponding library. Click it.
* Check if you have overlooked a class you need to implement per the import statement, or if the test was maybe written for another implementation than the one you chose. If you're trying to run student tests from [https://github.com/MaximilianAnzinger/pgdp2223-tests the Github repo], check the corresponding pull request and see if you maybe forgot to add the missing class to your test folder. Don't shy away from asking the author if their test is correct, either.
3. Are the tests relying on classes you don't have in your `src/pgdp.taskname` folder? Or on classes in the `testfoldername` folder?
# Is there a semicolon, bracket, etc missing?
  - Check if you have overlooked a class you need to implement per the import statement, or if the test was maybe written for another implementation than the one you chose. If you're trying to run student tests from [the Github repo](https://github.com/MaximilianAnzinger/pgdp2223-tests), check the corresponding pull request and see if you maybe forgot to add the missing class to your test folder. Don't shy away from asking the author if their test is correct, either.
4. Is there a semicolon, bracket, etc missing?
 
 
==B: Issues with the setup==
==B: Issues with the setup==
 
Assuming your folder structure looks like the image to the right, where your code is under <code>src</code> and <code>test</code> is your folder for tests:
Assuming your folder structure looks like this, where your code is under `src` and `test` is your folder for tests:
[[Datei:Folderstructure-intellij.png|thumb|Folder Structure Example]]
 
![image-20221127174409662](C:\Users\Jacob\AppData\Roaming\Typora\typora-user-images\image-20221127174409662.png)


===1. Test Sources Root===
===1. Test Sources Root===
 
* Right-click on <code>test</code>, <code>Mark as</code>, <code>Test Sources Root</code>.
- Right-click on `test`, `Mark as`, `Test Sources Root`
[[Datei:Mark as Test Sources Root.png|thumb|Mark Folder as Test Sources Root]]
 
  ![Screenshot (4)](C:\Users\Jacob\Pictures\Screenshots\Screenshot (4).png)


===2. build.gradle===
===2. build.gradle===
Open <code>build.gradle</code>.
# Does the file contain the name of the test folder (here: <code>test</code>) in single brackets under <code>sourceSets, test, java</code> in the array <code>srcDirs</code>? ''(1)''


Open `build.gradle`.
* If not, copy the following at the proper location (see image):
<syntaxhighlight lang="java">


1. Does the file contain the name of the test folder (here: `test`) in single brackets under `sourceSets, test, java` in the array `srcDirs`? _(1)_
test {
    java {
        srcDirs = ['test']
    }
}


  - If not, copy the following at the proper location (see image):
</syntaxhighlight>
# Does it contain the JUnit dependency? ''(2)''
* If not, copy the following at the proper location (see image). You may need to change the version number according to the JUnit version you have added.
<syntaxhighlight lang="java">
dependencies {
    implementation 'org.junit.jupiter:junit-jupiter:5.8.1'
}
</syntaxhighlight>


    ```java
# Does it specify <code>useJUnitPlatform()</code>? ''(3)''
    test {
* If not, copy the following at the proper location (see image):
            java {
<syntaxhighlight lang="java">
                srcDirs = ['test']
test{
            }
    useJUnitPlatform()
        }
}
    ```
</syntaxhighlight>
 
[[Datei:Build.gradle.png|thumb|How <code>build.gradle</code> is supposed to look]]
2. Does it contain the JUnit dependency? _(2)_
 
  - If not, copy the following at the proper location (see image). You may need to change the version number according to the JUnit version you have added.
 
    ```java
    dependencies {
        implementation 'org.junit.jupiter:junit-jupiter:5.8.1'
    }
    ```
 
3. Does it specify `useJUnitPlatform()`? _(3)_
 
  - If not, copy the following at the proper location (see image):
 
    ```java
    test{
        useJUnitPlatform()
    }
    ```
 
![image-20221127175416357](C:\Users\Jacob\AppData\Roaming\Typora\typora-user-images\image-20221127175416357.png)


===3. Project Structure===
===3. Project Structure===
 
# Navigate to <code>File</code>, <code>Project Structure</code>.
1. Navigate to `File`, `Project Structure`.
[[Datei:Nav to project structure.png|thumb|Navigate to <code>Project Structure</code>]]
 
# Under <code>Modules</code>, check that it looks like the following image:
  ![Screenshot (5)](assets/Screenshot (5).png)
[[Datei:Modules.png|thumb|How <code>Modules</code> should look]]
 
If you have a <code>test</code> folder on the same level as <code>W0XH0Y</code>, delete it by selecting it, then clicking the minus button (see the orange marking).
2. Under `Modules`, check that it looks like the following image:
 
  ![image-20221127180638291](assets/image-20221127180638291.png)
 
If you have a `test` folder on the same level as `W0XH0Y`, delete it by selecting it, then clicking the minus button (see the orange marking).


===4. Build options===
===4. Build options===
# Navigate to <code>File</code>, <code>Settings</code>.
[[Datei:Nav to settings.png|thumb|Navigate to <code>Settings</code>]]
# Expand (using the small arrows <code>></code>) to the following level: <code>Build, Execution, Deployment<nowiki></code> ''(1)'', <code>Build Tools</code> ''(2)''. Click <code>Gradle</code> ''(3)''.
# Under <code>Run tests using:</code> ''(4)'', select <code>IntelliJ IDEA</code> ''(5)'', if <code>Gradle</code> is selected.
# Click <code>OK</code>.
[[Datei:Build Gradle Use IntelliJ.png|thumb|Setting Gradle's Test Runner to IntelliJ]]


1. Navigate to `File`, `Settings`.
===5. Run via build.gradle===
 
# You might see a green "Play" button in your build.gradle, next to <code>sourceSets/test</code>, <code>test/useJUnitPlatform</code> or <code>dependencies</code>.
  ![Screenshot (6)](assets/Screenshot (6).png)
# If so, try to click one of them. This should run all of your test classes. If the tests run properly, you should also be able to run them individually again, either by rightclicking the test classes or by clicking the green arrows within them.
 
2. Expand (using the small arrows `>`) to the following level: `Build, Execution, Deployment` _(1)_, `Build Tools` _(2)_. Click `Gradle` _(3)_.
 
3. Under `Run tests using:` _(4)_, select `IntelliJ IDEA` _(5)_, if `Gradle` is selected.
 
4. Click `OK`.
 
![Screenshot (7)](assets/Screenshot (7).png)


==C: Still not working?==
==C: Still not working?==
In case your tests still don't work, open a Zulip thread.
In case your tests still don't work, open a Zulip thread.

Aktuelle Version vom 11. Dezember 2022, 17:16 Uhr

This quick guide shall help you fix the most common JUnit errors.

It has been written for IntelliJ - might work similarly with other IDEs, but might also not.

In case your tests still don't work after going through these steps (please try to run your tests after each section and see if the issue has been resolved), open a Zulip thread.

A: Issues within the Test classes[Bearbeiten | Quelltext bearbeiten]

General things to check:

  1. Does the package name at the top of each test class correspond to the actual folder structure?
  • If a class says package pg.dp; for example, but is sitting in the folder pg, remove the .dp. If it says package pg; instead, but is sitting in pg/dp, try adding .dp to the package.
  1. Is the test trying to import libraries you need to add first?
  • Check the import section and hover over red import statements. You should get a suggestion to import the corresponding library. Click it.
  1. Are the tests relying on classes you don't have in your src/pgdp.taskname folder? Or on classes in the testfoldername folder?
  • Check if you have overlooked a class you need to implement per the import statement, or if the test was maybe written for another implementation than the one you chose. If you're trying to run student tests from the Github repo, check the corresponding pull request and see if you maybe forgot to add the missing class to your test folder. Don't shy away from asking the author if their test is correct, either.
  1. Is there a semicolon, bracket, etc missing?

B: Issues with the setup[Bearbeiten | Quelltext bearbeiten]

Assuming your folder structure looks like the image to the right, where your code is under src and test is your folder for tests:

Folder Structure Example

1. Test Sources Root[Bearbeiten | Quelltext bearbeiten]

  • Right-click on test, Mark as, Test Sources Root.
Mark Folder as Test Sources Root

2. build.gradle[Bearbeiten | Quelltext bearbeiten]

Open build.gradle.

  1. Does the file contain the name of the test folder (here: test) in single brackets under sourceSets, test, java in the array srcDirs? (1)
  • If not, copy the following at the proper location (see image):
test {
    java {
        srcDirs = ['test']
    }
}
  1. Does it contain the JUnit dependency? (2)
  • If not, copy the following at the proper location (see image). You may need to change the version number according to the JUnit version you have added.
dependencies {
    implementation 'org.junit.jupiter:junit-jupiter:5.8.1'
}
  1. Does it specify useJUnitPlatform()? (3)
  • If not, copy the following at the proper location (see image):
test{
    useJUnitPlatform()
}
How build.gradle is supposed to look

3. Project Structure[Bearbeiten | Quelltext bearbeiten]

  1. Navigate to File, Project Structure.
Navigate to Project Structure
  1. Under Modules, check that it looks like the following image:
How Modules should look

If you have a test folder on the same level as W0XH0Y, delete it by selecting it, then clicking the minus button (see the orange marking).

4. Build options[Bearbeiten | Quelltext bearbeiten]

  1. Navigate to File, Settings.
Navigate to Settings
  1. Expand (using the small arrows >) to the following level: Build, Execution, Deployment<nowiki> (1), Build Tools (2). Click Gradle (3).
  2. Under Run tests using: (4), select IntelliJ IDEA (5), if Gradle is selected.
  3. Click OK.
Setting Gradle's Test Runner to IntelliJ

5. Run via build.gradle[Bearbeiten | Quelltext bearbeiten]

  1. You might see a green "Play" button in your build.gradle, next to sourceSets/test, test/useJUnitPlatform or dependencies.
  2. If so, try to click one of them. This should run all of your test classes. If the tests run properly, you should also be able to run them individually again, either by rightclicking the test classes or by clicking the green arrows within them.

C: Still not working?[Bearbeiten | Quelltext bearbeiten]

In case your tests still don't work, open a Zulip thread.