Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ dependencies {
simulationRelease wpi.sim.enableRelease()

testImplementation libs.junit.jupiter
testImplementation libs.mockito.core
testImplementation libs.mockito.junit.jupiter

testRuntimeOnly libs.junit.platform.launcher
}

Expand Down
5 changes: 5 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ errorproneCore = "2.28.0"
errorproneAnnotations = "2.28.0"
junit = "5.10.1"
junitPlatform = "1.10.1"
mockito = "5.11.0"


[libraries]
wpilib-java = { module = "edu.wpi.first.gradle:edu.wpi.first.gradle.gradle.plugin", version.ref = "wpilib" }
Expand All @@ -17,6 +19,9 @@ errorprone-core = { module = "com.google.errorprone:error_prone_core", version.r

junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" }
junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junitPlatform" }
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" }
mockito-junit-jupiter = { module = "org.mockito:mockito-junit-jupiter", version.ref = "mockito" }

[plugins]
wpilib = { id = "edu.wpi.first.GradleRIO", version.ref = "wpilib" }
spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
Expand Down
12 changes: 12 additions & 0 deletions src/test/TestHowTo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How to Run Tests
You can run the tests using the Gradle wrapper:

```bash
./gradlew test
```

## How to Debug Tests
You can debug tests directly in VS Code:
1. Open the test file (e.g., [src/test/java/frc/robot/ExampleTest.java](java/frc/robot/ExampleTest.java)).
2. Click the "Run" or "Debug" codelens above the test method or class.
3. Alternatively, use the Testing view in the sidebar to run or debug specific tests.
28 changes: 28 additions & 0 deletions src/test/java/frc/robot/ExampleTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package frc.robot;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.function.DoubleSupplier;
import org.junit.jupiter.api.Test;

class ExampleTest {

@Test
void testMocking() {
// Create a mock object
DoubleSupplier mockSupplier = mock(DoubleSupplier.class);

// Define behavior
when(mockSupplier.getAsDouble()).thenReturn(10.0);

// Verify behavior
assertEquals(10.0, mockSupplier.getAsDouble(), 0.001);
}

@Test
void testBasicAssertion() {
assertEquals(2, 1 + 1);
}
}
52 changes: 52 additions & 0 deletions src/test/java/frc/robot/util/AllianceUtilsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package frc.robot.util;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mockStatic;

import edu.wpi.first.wpilibj.DriverStation;
import edu.wpi.first.wpilibj.DriverStation.Alliance;
import java.util.Optional;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;

class AllianceUtilsTest {

private MockedStatic<DriverStation> mockedDriverStation;

@BeforeEach
void setUp() {
mockedDriverStation = mockStatic(DriverStation.class);
}

@AfterEach
void tearDown() {
mockedDriverStation.close();
}

@Test
void testIsBlue() {
mockedDriverStation.when(DriverStation::getAlliance).thenReturn(Optional.of(Alliance.Blue));

assertTrue(AllianceUtils.isBlue());
assertFalse(AllianceUtils.isRed());
}

@Test
void testIsRed() {
mockedDriverStation.when(DriverStation::getAlliance).thenReturn(Optional.of(Alliance.Red));

assertTrue(AllianceUtils.isRed());
assertFalse(AllianceUtils.isBlue());
}

@Test
void testNoAlliance() {
mockedDriverStation.when(DriverStation::getAlliance).thenReturn(Optional.empty());

assertFalse(AllianceUtils.isBlue());
assertFalse(AllianceUtils.isRed());
}
}
Comment thread
markpete marked this conversation as resolved.