Test-eine Methode, Verhalten im multi-threading-Umgebung mit JUnit?
Für eine bestimmte Methode, die ich schreiben will testen, cased, um zu sehen, wie es sich verhält, wenn mehrere Threads gleichzeitig laufen. Klingt vielleicht dumm, aber wollte mal Fragen ob es möglich ist, zu jedem solchen Szenario ?
- Vielleicht nicht eine wirkliche Antwort auf deine Frage, aber ein allgemeiner Hinweis: Bei der Verwendung mehrerer threads kann der code nicht deterministisch sein. Es kann passieren, dass dein test gut läuft 1000 mal, aber nicht während der 1001th Ausführung ohne code-änderung.
- Vereinbart, das ist ein großer Faktor, aber auch zu prüfen, wie für die thread-Sicherheit, wenn alle, die ich Schreibe laufen soll in einer multi-threaded Umgebung? Es ist sehr wichtig für mich
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ich implementiert diese in einigen code-zuletzt:
Können Sie tatsächlich starten Sie einfach Ihren thread in der test-Fall, aber ich bin mir ziemlich sicher, dass Sie es nicht tun, was Sie wollen.Die Ausführung ist nicht-deterministisch.
Scheint es einige concurrency testing-frameworks, die helfen könnten. Sie verwenden spezielle Techniken, um das Verhalten des threads zu verursachen, race conditions und andere schlimme Dinge.
Habe ich einen quick-check und finden MultithreadedTC.
Vielleicht bringt Sie auf den richtigen Weg.
Betrachten Sie Ihre unit-test-code als einen thread zu. Wenn ich versuchte, etwas zu testen in der multi-threaded Umgebung, generell ich Folgendes gemacht:
Die Sache ist die,
the unit test thread may not give up execution to the others
- und das ist, warum Sie müssen es zwingen, irgendwie. Sie können nicht "direkt" Steuern, wie der Prozessor-Zeit zugeordnet ist, threads, so dass ist, warum Sie haben, um Sie zu beginnen, und lassen Sie Sie "work out" das problem.