[!TIP]
🌐 English version available here 👈
Dieses Projekt enthält Integrationstests, die die vollständige Kompatibilität zwischen den Java- und .NET-Implementierungen des X.Justiz Core SDKs validieren. Die Tests stellen sicher, dass Daten, die von einem SDK serialisiert wurden, vom anderen korrekt deserialisiert werden können, ohne Datenverlust oder Mapping-Fehler.
Diese Tests stellen sicher, dass:
Bevor Sie die Integrationstests ausführen, stellen Sie sicher, dass Sie Folgendes installiert haben:
| Software | Mindestversion | Prüfung | Download |
|---|---|---|---|
| .NET SDK | 8.0 oder neuer | dotnet --version |
.NET herunterladen |
| Java JDK | 17 oder neuer | java -version |
OpenJDK herunterladen |
| Gradle | (enthalten via Wrapper) | N/A | Enthalten |
# Installation überprüfen
dotnet --version
# Sollte ausgeben: 8.0.x oder höher
JAVA_HOME Umgebungsvariable:
```powershell
echo $env:JAVA_HOME
java -version
```
5050 – Verwendet von der .NET API8080 – Verwendet von der Java API
# Prüfen, ob Ports belegt sind
netstat -ano | findstr :5050
netstat -ano | findstr :8080
# Wenn keine Ausgabe erfolgt, sind die Ports verfügbar
# Installation überprüfen
dotnet --version
# Installation überprüfen
java -version
# Sicherstellen, dass JAVA_HOME gesetzt ist
echo $JAVA_HOME
chmod +x java/gradlew
# Navigieren Sie zum Verzeichnis der Integrationstests
cd dotnet/test/xjustiz.core-dotnet.IntegrationTests
# Alle Integrationstests ausführen
dotnet test
# Mit detaillierter Ausgabe ausführen
dotnet test --logger "console;verbosity=detailed"
# Bestimmte Testkategorie ausführen
dotnet test --filter "FullyQualifiedName~JavaToDotNet"
dotnet test --filter "FullyQualifiedName~DotNetToJava"
dotnet test --filter "FullyQualifiedName~FullRoundTrip"
Strg+Shift+B)Test → Test-Explorer oder Strg+E, T)| Test | Beschreibung |
|——|————-|
| JavaToDotNet_HttpJson | Java API serialisiert JSON, .NET API deserialisiert |
| JavaToDotNet_HttpXml | Java API serialisiert XML, .NET API deserialisiert |
| JavaToDotNet_JsonFile | JSON-Datei von Java API hochgeladen an .NET API |
| JavaToDotNet_XmlFile | XML-Datei von Java API hochgeladen an .NET API |
| Test | Beschreibung |
|——|————-|
| DotNetToJava_HttpJson | .NET API serialisiert JSON, Java API deserialisiert |
| DotNetToJava_HttpXml | .NET API serialisiert XML, Java API deserialisiert |
| DotNetToJava_JsonFile | JSON-Datei von .NET API hochgeladen an Java API |
| DotNetToJava_XmlFile | XML-Datei von .NET API hochgeladen an Java API |
| Test | Beschreibung |
|——|————-|
| FullRoundTrip_JavaDotNetJava | Java → .NET → Java (Datenstabilität prüfen) |
| FullRoundTrip_DotNetJavaDotNet | .NET → Java → .NET (Datenstabilität prüfen) |
| MixedFormat_JsonToXmlToJson | Formatübergreifende Konvertierungstests |
| StressTest_MultipleRoundTrips | Stabilitätstest mit 5 vollständigen Durchläufen |
Alle Tests laufen gegen diese Beispieldatensätze aus /example-datasets/:
arbeitsrecht – Arbeitsrechtfallerbrecht – Erbrechtfallfluggastrecht – Fluggastrechtfallmietrecht – Mietrechtfallxjustiz.core-dotnet.IntegrationTests/
├── Infrastructure/
│ ├── ApiProcessManager.cs # Verwaltet API-Lebenszyklus mit robuster Fehlerbehandlung
│ ├── CrossApiClient.cs # HTTP-Client für JSON/XML-Kommunikation
│ ├── MessageComparer.cs # Utility für tiefen Vergleich zur Validierung
│ └── TestDataProvider.cs # Lädt Testdatensätze
├── IntegrationTestFixture.cs # xUnit Test-Fixture (geteilt über Tests)
├── JavaToDotNetCompatibilityTests.cs
├── DotNetToJavaCompatibilityTests.cs
├── FullRoundTripCompatibilityTests.cs
└── README.md
Lösung:
JAVA_HOME~/.bashrc oder ~/.zshrc:
export JAVA_HOME=/path/to/java
export PATH=$JAVA_HOME/bin:$PATH
Lösung: Finden und stoppen Sie den Prozess, der den Port verwendet:
# Windows - Prozess finden
netstat -ano | findstr :5050
# Prozess per PID beenden
taskkill /PID <PID> /F
# Linux/Mac - finden und beenden
lsof -i :5050
kill -9 <PID>
Lösung:
Der Gradle Wrapper sollte in /java/gradlew.bat sein. Wenn er fehlt:
cd java
gradle wrapper --gradle-version 8.5
Mögliche Ursachen:
StartupTimeoutSeconds in ApiProcessManager.csLösung: Versuchen Sie, die APIs zuerst manuell auszuführen:
# Terminal 1 - Start .NET API
cd dotnet/example-api
dotnet run --urls http://localhost:5050
# Terminal 2 - Start Java API
cd java
./gradlew :example-api:bootRun
Die Testausgabe zeigt genau, welche Felder abweichen. Häufige Ursachen:
MessageComparer.cs aktualisiert werdenWenn Sie die APIs manuell testen möchten:
# Terminal 1 - .NET API
cd dotnet/example-api
dotnet run --urls http://localhost:5050
# Swagger UI: http://localhost:5050/swagger
# Terminal 2 - Java API
cd java
./gradlew :example-api:bootRun
# Swagger UI: http://localhost:8080/swagger-ui.html
Beide APIs stellen die gleichen Endpunkte bereit:
POST /XJustizCore/json - Akzeptiert JSON-NachrichtPOST /XJustizCore/xml - Akzeptiert XML-NachrichtPOST /XJustizCore/json-file - Akzeptiert JSON-Datei-UploadPOST /XJustizCore/xml-file - Akzeptiert XML-Datei-UploadPOST /XJustizCore/json/generate-file - Generiert JSON-AusgabePOST /XJustizCore/xml/generate-file - Generiert XML-Ausgabe[Collection("Integration Tests")] hinzuIntegrationTestFixture über den Konstruktor:
[Collection("Integration Tests")]
public class MyNewTests
{
private readonly IntegrationTestFixture fixture;
public MyNewTests(IntegrationTestFixture fixture)
{
this.fixture = fixture;
}
[Fact]
public async Task MyTest()
{
// Verwenden Sie fixture.Client für API-Aufrufe
// Verwenden Sie fixture.Comparer für Datenvalidierung
}
}
Dieses Projekt ist Teil des X.Justiz Core SDKs und steht unter der MIT-Lizenz.