Library-ReImport
Aus ExpeccoWiki
Sorry, but this page has not been translated yet.
Bei einem Re-Import wird eine Bibliothek durch eine neuere Version derselben ersetzt. Dies sollten Sie tun, wenn eine neuere Version einer von ihnen benutzten Bibliothek verfügbar ist, UND sie aus dieser einen neuen oder verbesserten Funktionsbaustein benötigen. Sie sollten normalerweise NICHT auf neuere Bibliotheken migrieren, wenn ihre TestSuite von Änderungen nicht unbedingt betroffen ist, UND sie aus Zeit oder Geld-Gründen die korrekte Durchführbarkeit ihrer TestSuite(n) nicht gefärden wollen.
Dazu muss man wissen, dass exepecco es erlaubt eine Bibliothek auch in mehreren Versionen gleichzeitig innerhalb einer Testsuite zu verwalten, ohne dass es zu Namens- oder Funktionskonflikten kommt. Dies ist immer dann notwendig, wenn folgende Konstellation vorliegt:
Ihre TestSuite:
importiert/benötigt A(v1) importiert/benötigt B(v1)
Die Bibliothek B:
importiert/benötigt A(v1)
Angenommen, Sie arbeiten bereits produktiv mit dieser TestSuite (d.h. sie ist lauffähig, und Sie wollen deren korrekte Durchführbarkeit nicht gefährden). Weiterhin nehmen wir an, dass die Entwickler der Bibliothek B nun eine neue Version liefern (vielleicht mit Erweiterungen oder Bugfixes), die ihrerseits eine neue Version der Bibliothek A erfordert. Falls nun die neue Variante von A inkompatibel mit ihrer TestSuite wäre, könnte dadurch ihre TestSuite gestört werden.
Dieses Phänomen nennt man auch "DLL Hell" (auf deutsch "DLL-Hölle") http://de.wikipedia.org/wiki/DLL_Hell, da es sich im ein bekanntes Problem von Windows handelt (Und anderen Betriebssystemen, welche Bibliotheken nicht mehrfach in verschiedenen Varianten verwalten können).
Unter expecco ergibt sich nach einem reImport von B (mit neuer Version) folgendes Bild: Ihre TestSuite:
importiert/benötigt A(v1) importiert/benötigt B(v2)
Bibliothek B(v2):
importiert/benötigt A(v2)
Die Bibliothek A wird nun in zwei Varianten im System referenziert - solange, bis Sie in Ihrer TestSuite auch einen Reimport auf A durchführen.