Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich habe eine Bibliothek, die Werte von einem angeschlossenem (über ein COM Port) Gerät auslesen kann. Um diese zu testen muss also ein Gerät eingeschlossen sein, und ich braucht noch den Geräte-String. Z.B. Unter Linux ist es /dev/ttyUSB0, unter Windows COM3. Kann man diesen String irgendwie über Maven an meinen Test schicken?
Wie ist das gemeint? Willst Du (einzelne) JUnit-Tests aus Eclipse heraus starten? Oder meinst Du Die Anwendung ansich mit main?
Falls Du das erste meinst, das geht imho garnicht. Ein Ausweg wäre hier eine Klasse mit Konstanten oder das Einlesen eines properites-Files.
Falls Du das zweite meinst, im Menü Run -> Run Configurations klicken, die Klasse mit der main-Methode auswählen und im Reiter "Arguments" die Argumente entweder als Program Arguments (wird zum Parameter der main-Methode) oder als VM-Argumens eintragen.
Also z.Z. ist es so, dass ich meine JUnit Tests habe. Dort habe ich eine Konstante, static final String device = "/dev/ttyUSB0"; Nun ist aber so, dass sich das Gerät-String ändert. Dann will ich ja nicht überall diese Konstante anpassen wollen.
Ich will das am liebsten als Parameter übergeben. An a) maven, als eine Property und b) in Eclipse, wenn ich meine Tests manuell starte.
Ich könnte es auch als eine Datei lösen, aber als Parameter wäre es mir lieber. Weil, theoretisch ändert sich der String von Computer zu Computer. In Windows ist er COM3, oder COM5 oder COM1, in Linux ist er mal ttyUSB0 oder ttyUSB1 oder ttyUSB2.
Wenn man da eine Datei hat, wird es schwierig mit dem SCM (aka git). Dann muss man die Datei auf ignore setzen, oder jeder ändert die Datei. Also am besten als Parameter.
Dann habe ich ein Modul für Linux und Windows. Aber deswegen kann sich das Gerät-String trotzdem ändern. Wie gesagt in Windows ist er COM3, oder COM5 oder COM1, in Linux ist er mal ttyUSB0 oder ttyUSB1 oder ttyUSB2.
Ich hab jetzt nochmal bei meiner Heiminstallation von Eclipse geschaut (Helios). Dort kann man unter RunConfigurations auch für einen JUnit-Testcase "-D"-System Properties angeben. Ich habe folgenden (dämlichen) TestCase geschrieben:
Java:
import junit.framework.TestCase;
public class TestTest extends TestCase {
public final void testTest() {
System.out.println(System.getProperty("comport"));
}
}
Erst habe ich ihn direkt gestartet. Ausgabe war -wie erwartet- null. Dann hab ich den TestCase mit der rechten Maustaste angeklickt und RunAs -> RunConfigurations ausgewählt. In dem dann erscheinenden Dialog konnte ich den TestCase auswählen und dafür im Reiter "Arguments" ein -Dcomport=COM3 eingeben. Danach hat der TestCase "COM3" ausgegeben.
Dann habe ich ein Modul für Linux und Windows. Aber deswegen kann sich das Gerät-String trotzdem ändern. Wie gesagt in Windows ist er COM3, oder COM5 oder COM1, in Linux ist er mal ttyUSB0 oder ttyUSB1 oder ttyUSB2.
Ich hab jetzt nochmal bei meiner Heiminstallation von Eclipse geschaut (Helios). Dort kann man unter RunConfigurations auch für einen JUnit-Testcase "-D"-System Properties angeben. Ich habe folgenden (dämlichen) TestCase geschrieben:
Java:
import junit.framework.TestCase;
public class TestTest extends TestCase {
public final void testTest() {
System.out.println(System.getProperty("comport"));
}
}
Erst habe ich ihn direkt gestartet. Ausgabe war -wie erwartet- null. Dann hab ich den TestCase mit der rechten Maustaste angeklickt und RunAs -> RunConfigurations ausgewählt. In dem dann erscheinenden Dialog konnte ich den TestCase auswählen und dafür im Reiter "Arguments" ein -Dcomport=COM3 eingeben. Danach hat der TestCase "COM3" ausgegeben.