JUnit

Nrobert

Mitglied
Hallo, hätte eine Frage zu JUnit (Verwende JUnit 4).
Ich habe meine Klassen in einem package und meine testklassen in einem anderen package.
In jeder Klasse befindet sich eine Angabe, also ein Beispiel was zu tun ist und zu dieser Klasse gibt es dann auch eine Testklasse (im anderen package), die überprüft ob das Beispiel richtig gelöst wurde.
Nun will ich, dass der User nicht den Testcode sieht, sondern er soll nur die TestSuite ausführen um überprüfen zu können ob das Beispiel richtig gelöst wurde. Das Problem ist jedoch, dass alle Testklassen im package sein müssen, damit ich die TestSuite erstellen kann und wenn sie alle im package sind, dann kann der Benutzer die alle sehen. Ich hab versucht in einem eigenen folder nur die class-files zu kopieren und sie so dem TestSuite zu übergeben, da bei den class_files eh nur bytecode steht und es für den benutzer unbrauchbar ist, jedoch geht das nicht. Gibt es also eine Möglichkeit den Code von den Testklassen irgendwie zu verschlüsseln oder dass im package sich nur die TestSuite-Klasse und die class_files befinden und sich die testsuite irgendiwie diese class_files holt.

P.S: verwende eclipse
 
M

maki

Gast
Verschlüsseln etc. kannst du vergessen.

Bytecode kann man sehr einfach wieder zu Javacode dekompilieren, ausser natürlich man nutzt obfuscator, dann erhält man entweder unleserlichen Javacode, oder nicht-funktionierenden.

Mal doof gefragt: Warum darf man den Testcode nicht sehen?

Die Übungen/Kata die ich kenne zeigen alle den Testcode, falls vorhanden.
 

Nrobert

Mitglied
Verschlüsseln etc. kannst du vergessen.

Bytecode kann man sehr einfach wieder zu Javacode dekompilieren, ausser natürlich man nutzt obfuscator, dann erhält man entweder unleserlichen Javacode, oder nicht-funktionierenden.

Mal doof gefragt: Warum darf man den Testcode nicht sehen?

Die Übungen/Kata die ich kenne zeigen alle den Testcode, falls vorhanden.

Weil man durch die Betrachtung des Testcodes sich leichter beim Lösen der Aufgabenstellung tut
 

tfa

Top Contributor
Dann bleibt dir wohl nichts anderes übrig, als den Testcode nicht heraus zu geben. Das erhöht außerdem die Spannung bei der Abgabe der Aufgaben :)
 

FArt

Top Contributor
Weil man durch die Betrachtung des Testcodes sich leichter beim Lösen der Aufgabenstellung tut

Verstehe ich nicht ganz.

Der Testcode kann doch nur die öffentliche API abprüfen, bzw. Klassen, deren Schnittstelle komplett gefordert und spezifiziert ist. Somit ist da keine Mehrinformation enthalten.

Sonst reicht es natürlich die kompilierten Testklassen (mit oder ohne Suite) als JAR zu liefern. JUnit ist das natürlich egal.
 

Nrobert

Mitglied
Wenn der User den Testcode zu der Klasse sieht, dann tut er sich ja leichter. Z.b.: sieht er im Testcode, welche Methode verwendet wird bzw. wie die Variablen initialisiert sind bzw. bei manchen Klassen auch andere Informationen.....weil im Testcode treffe ich vorher alle Vorbereitung damit ich dann mit den Assert-Methoden auf Gleichheit überprüfen kann. Ich will die einzelnen Testklassen rausnehmen und nur die TestSuite drinnen lassen, damit er überprüfen kann, ob er die Klasse richtig nach der Angabe programmiert hat. Will dann nur die .class-Files von TestKlassen im packaga bzw in einem eclipse-ordner reintun und mit der TestSuite verlinken, weil die TestSuite braucht ja diese class-Files. Aber um eine TestSuite in Eclipse automatisch erstellenen und ausführen zu können, müssen sich die Java-Testklassen im package befinden und das will ich eig. nicht. Ich suche irgendeine Möglichkeit den Testcode von den normalen Klassen zu trennen, jedoch muss der Benutzer trotzdem seine Klasse testen können.
 

tfa

Top Contributor
Du könntest eine Webanwendung bereitstellen, an die deine Leute (Schüler? Studenten?) ihre fertige Software schicken und dann automatisch die Tests ablaufen lässt. (Mal davon abgesehen, dass die Entwickler eigentlich ihre Unittests selber schreiben sollten...).
Wenn du ein Repository hast, in das die Quellen eingecheckt werden, könnte man das ganz einfach mit Jenkins machen. Der Server lässt die Testsuite laufen, sobald neuer Code comittet wurde und schickt das Ergebnis per Email an die Kandidaten. Der Testcode befindet sich dabei nur auf dem Server und muss nicht heraus gegeben werden.
 

FArt

Top Contributor
Aber um eine TestSuite in Eclipse automatisch erstellenen und ausführen zu können, müssen sich die Java-Testklassen im package befinden und das will ich eig. nicht. Ich suche irgendeine Möglichkeit den Testcode von den normalen Klassen zu trennen, jedoch muss der Benutzer trotzdem seine Klasse testen können.

In meiner IDE kann ich einfach den Klassenpfad für die Tests anpassen. Die Tests (aus einem JAR) werden dann auch gefunden.

Warum muss die Suite automatisch erstellt werden? Liefer doch die Testklassen als JAR und die Suite als Source (da sieht man dann auch nichts, außer welche Klassen die Suite zusammenfasst).

Geht das nicht mit Eclipse?
 

Nrobert

Mitglied
In meiner IDE kann ich einfach den Klassenpfad für die Tests anpassen. Die Tests (aus einem JAR) werden dann auch gefunden.

Warum muss die Suite automatisch erstellt werden? Liefer doch die Testklassen als JAR und die Suite als Source (da sieht man dann auch nichts, außer welche Klassen die Suite zusammenfasst).

Geht das nicht mit Eclipse?

Je genau das will ich eigentlich machen, doch habs bis jetzt nicht geschafft.....bzw. ich weiß nicht wie ich das angehen soll
 
Zuletzt bearbeitet:

Nrobert

Mitglied
In meiner IDE kann ich einfach den Klassenpfad für die Tests anpassen. Die Tests (aus einem JAR) werden dann auch gefunden.

Warum muss die Suite automatisch erstellt werden? Liefer doch die Testklassen als JAR und die Suite als Source (da sieht man dann auch nichts, außer welche Klassen die Suite zusammenfasst).

Geht das nicht mit Eclipse?
Hallo, kannst du mir vll. erklären wie du das meinst? Ich bin noch in Programmieren ein Anfänger und wüßte gerne ich dieses Problem lösen könnte.




Mfg
Nrobert
 

tfa

Top Contributor
Und das schon angesprochene Problem, dass man Classdateien aus JARs auch dekompilieren kann, ist dir egal?
 

FArt

Top Contributor
Hallo, kannst du mir vll. erklären wie du das meinst? Ich bin noch in Programmieren ein Anfänger und wüßte gerne ich dieses Problem lösen könnte.




Mfg
Nrobert

Wie gesagt: Testklassen in JAR verpacken. Das JAR in den Klassenpfad des Moduls aufnehmen (wenn es geht, in den TEST-Scope) und eine Testklasse schreiben, die die Suite bildet.

Alternativ kann man das JAR auch dem Klassenpfad der Run-Konfiguration der Suite hinzufügen.

Besser kann ich es nicht erklären, weil ich kein Eclipse User bin.
 

FArt

Top Contributor
Und das schon angesprochene Problem, dass man Classdateien aus JARs auch dekompilieren kann, ist dir egal?

Ich würde sagen, ausreichende "Sicherheit". Ich hätte auch kein Problem damit, die Testsourcen herauszugeben, wie ich oben schon sagte. Alles was eine Testklasse abtesten kann muss ja auch spezifiziert sein und ist somit kein Geheimnis.

Eine öffentliche API ist spezifiziert. Wenn konkrete Klassen gefordert sind, müssen diese auch mit Schnittstelle und Verhalten spezifiziert sein.... so what...???
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Junit Test Allgemeine Java-Themen 8
J Junit surefire: enrich test information Allgemeine Java-Themen 0
J Junit start surefire for manual testing Allgemeine Java-Themen 1
P No JUnit tests found Allgemeine Java-Themen 5
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
K Input/Output JUnit: Log Inhalte, falsche Assertion Allgemeine Java-Themen 2
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
AssELAss Junit-Tests für SQL-Veribindung sowie SQL-Queries? Allgemeine Java-Themen 3
O Maven - JUnit - H2 Allgemeine Java-Themen 1
M Selenium JUnit Tests (Auswahl von Testmethoden auswerten) Allgemeine Java-Themen 5
C JUNIT - ANT - build.xml Allgemeine Java-Themen 0
Airwolf89 JUnit: Vorschläge/ Best Practice Allgemeine Java-Themen 7
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
E JUnit wie Testergebnisse pro Test ("Test Report") erhalten? Allgemeine Java-Themen 1
B JUnit Zufalls Operation testen Allgemeine Java-Themen 1
P JUnit Allgemeine Java-Themen 2
B jUnit 4: Wie protokolliert man Testergebnisse? Allgemeine Java-Themen 1
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
M JUnit Test Suites Allgemeine Java-Themen 2
L JUnit - automatisiertes vs. manuelles Testen? Allgemeine Java-Themen 6
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
A JUnit/Hashcode Problem Allgemeine Java-Themen 5
X Problem mit URLClassLoader und JUnit Allgemeine Java-Themen 3
M Junit Tests durchführen Allgemeine Java-Themen 18
M JVM Probleme JUnit Allgemeine Java-Themen 2
G NUnit Features in JUnit Allgemeine Java-Themen 2
darekkay (JUnit) Testdaten generieren - Framework? Allgemeine Java-Themen 2
A JUnit problem Allgemeine Java-Themen 9
T Organisation von Junit Testfällen? Allgemeine Java-Themen 2
M JUnit Tests vs. DBUnit Tests Allgemeine Java-Themen 3
P Klassen Junit test funktioniert nicht... Allgemeine Java-Themen 11
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
U Fehler: Hauptklasse org.junit.runner.JUnitCore konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
J JUnit-Tests Zeichensatzproblem ? Allgemeine Java-Themen 2
J JUnit, TestCase vs "einfacher" Test Allgemeine Java-Themen 3
S [JUnit] Name von TestCase bekommen Allgemeine Java-Themen 4
1 JUnit Test Suit Allgemeine Java-Themen 2
T Junit-Tests in Java Klasse ausführen Allgemeine Java-Themen 26
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
M JUnit TestSuite erstellen Allgemeine Java-Themen 2
B JUnit und mehrere Instanzen der selben Applikation Allgemeine Java-Themen 4
G Testcases mit Junit auf private-Methode Allgemeine Java-Themen 7
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
C JUnit und das Zulassen von RuntimeExceptions Allgemeine Java-Themen 5
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
T JUnit-Log auslesen Allgemeine Java-Themen 13
C JUnit Tests Allgemeine Java-Themen 4
fastjack JUnit Supplementary Classes Allgemeine Java-Themen 4
O Junit Reports / Logs als XML ohne Maven/Ant Allgemeine Java-Themen 7
M Junit und Mocks Allgemeine Java-Themen 5
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
D junit - frage zu fixtures/test suites Allgemeine Java-Themen 11
A Seltsames Verhalten von JUnit-Tests im Zusammenspiel mit Ant Allgemeine Java-Themen 6
S JUnit: Erzeugen einer IOException Allgemeine Java-Themen 9
G JUnit Tests Allgemeine Java-Themen 7
G JUnit Test Allgemeine Java-Themen 5
S JUnit - was mocken, was nicht? Allgemeine Java-Themen 3
S JUnit TesSuite und @Repeat Allgemeine Java-Themen 2
S JUnit Tests für GUI / Oberflächen Allgemeine Java-Themen 2
M Junit und Mocks bei JDBC Daos Allgemeine Java-Themen 8
M JUnit Problem mit AssertionFailedError Allgemeine Java-Themen 2
B Testfälle mit JUnit Allgemeine Java-Themen 4
S JUnit Allgemeine Java-Themen 15
N ClassNotFound Exception bei JUnit Test? Allgemeine Java-Themen 2
G ANT Tutorial . Schritte bzgl. Junit Bibliothek Allgemeine Java-Themen 4
A JUnit Reports zu groß für XSLT Allgemeine Java-Themen 4
M JUnit und dynamische Tests Allgemeine Java-Themen 11
P JUnit unter Eclipse: Problem mit Exception Allgemeine Java-Themen 8
GilbertGrape Warum schlägt JUnit-Test fehl? Allgemeine Java-Themen 19
K Bekomme JUnit TEst nicht zum laufen :( Allgemeine Java-Themen 9
K Junit: Frage zum Ablauf Allgemeine Java-Themen 3
K JUnit: Tests über ant aufrufen Allgemeine Java-Themen 2
S JUnit und EasyMock Allgemeine Java-Themen 7
B Wie alt ist JUnit? Allgemeine Java-Themen 2
A Junit Exceptions testen Allgemeine Java-Themen 3
P Testen mit JUnit Allgemeine Java-Themen 8
7 JUnit: Testproblem. Allgemeine Java-Themen 23
G Ant + JUnit Allgemeine Java-Themen 2
F JUnit unter Ant Allgemeine Java-Themen 3
S Integer zu int konvertieren - JUnit Allgemeine Java-Themen 12
G testen mit JUnit? Allgemeine Java-Themen 3
K JUnit 4 User Interaktion Allgemeine Java-Themen 7
M Ant + Junit + Testclass in Jar Allgemeine Java-Themen 3
G Junit 4 - TestSuite Allgemeine Java-Themen 6
B JUnit Allgemeine Java-Themen 2
T CheckStyle, JUnit und FindBugs aus Java-Programm starten Allgemeine Java-Themen 2
S JUnit will ins Netz! Allgemeine Java-Themen 2
B JUnit - Gleichen Test x-mal durchlaufen Allgemeine Java-Themen 2
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
H JUnit Allgemeine Java-Themen 5
N Problem mit Ant und JUnit Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben