Datei in Java simulieren

8

Ich versuche Einheitentests für eine Methode zu schreiben, die einen String-Dateinamen annimmt, dann die Datei öffnet und daraus liest. Um diese Methode zu testen, dachte ich darüber nach, eine Datei zu schreiben und dann meine Methode aufzurufen. In der Buildfarm ist es jedoch nicht möglich, Dateien willkürlich auf die Festplatte zu schreiben. Gibt es eine Standardmethode zum "Simulieren" mit einer echten Datei in meinem Komponententest?

    
Frank 07.08.2012, 15:57
quelle

4 Antworten

-1

Dies ist sehr verpönt:

  

Die kleinste Menge an testbarem Code. Oft eine einzige Methode / Funktion,   Sans die Verwendung anderer Methoden oder Klassen. Schnell! Tausende von Einheiten   Tests können in zehn Sekunden oder weniger ausgeführt werden! Ein Komponententest verwendet NIEMALS:

     
  • eine Datenbank
  •   
  • ein App-Server (oder Server jeglicher Art)
  •   
  • Datei / Netzwerk I / O oder Dateisystem;
  •   
  • eine andere Anwendung;
  •   
  • die Konsole (System.out, System.err usw.)
  •   
  • Protokollierung
  •   
  • die meisten anderen Klassen (Ausnahmen sind DTO's, String, Integer, Mocks und vielleicht ein paar andere). "
  •   

Quelle

Wenn Sie aus einer Datei lesen müssen, lassen Sie eine Testdatei vorgenerieren, von der alle Komponententests gelesen werden. Es besteht keine Notwendigkeit, etwas auf die Festplatte zu schreiben.

    
Woot4Moo 07.08.2012, 16:05
quelle
16

Ich habe festgestellt, dass Mockito und Powermock sind eine gute Kombination dafür. Tatsächlich gibt es einen Blogpost mit einem Beispiel, wo die Dateiklasse ist Konstruktor wird zu Testzwecken verspottet. Hier ist auch ein kleines Beispiel, das ich zusammengestellt habe:

%Vor%

Testen mit Mockito + Powermock:

%Vor%     
esaj 07.08.2012 16:30
quelle
0

Wie wäre es mit mocked Stream-Klassen, die die echten (wie BufferredReader, File) vollständig überschreiben (also alle Methoden oder alle Methoden, die Sie verwenden)? Die Daten können als Array von Bytes gespeichert werden, z. B. in einem Singleton, wenn sie zwischen verschiedenen Testklassen verwendet werden sollen.

    
Vic 07.08.2012 16:18
quelle
0

Wenn Sie JUnit verwenden, gibt es den TemporaryFolder . Dateien werden nach dem Test gelöscht. Beispiel auf der Seite angegeben:

%Vor%

Allerdings habe ich es auch zum Testen meiner Android-Klasse Lese- / Schreibfunktionen wie:

verwendet %Vor%     
comodoro 08.01.2018 21:12
quelle

Tags und Links

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '348500',
    'url' => 'simulate-file-in-java',
];

$_SESSION = [
    '__flash' => [],
];