2. Testing untestable code
Über mich
Stephan Hochdörfer, bitExpert AG
Department Manager Research Labs
S.Hochdoerfer@bitExpert.de
@shochdoerfer
13. Testing untestable code
"...our test strategy requires us to
have more control [...] of the sut."
Gerard Meszaros, xUnit Test Patterns: Refactoring Test
Code
42. Testing untestable code
Externe Ressourcen – Dateisystem mocken
<?php
// set up test environmemt
vfsStream::setup('exampleDir');
// create directory in test enviroment
mkdir(vfsStream::url('exampleDir').'/sample/');
// check if directory was created
echo vfsStreamWrapper::getRoot()->hasChild('sample');
60. Testing untestable code
Generative Programmierung
Ein Frame ist eine Datenstruktur
die Wissen repräsentiert.
61. Testing untestable code
Eine Frame Instanz
public class Car {
private Engine engine;
public Car(String engine) {
this.engine = <!{Factory}!>.getByType(engine);
}
}
62. Testing untestable code
Der Frame Controller
public class MyFrameController extends
SimpleFrameController {
public void execute(Frame frame, FeatureConfig
config) {
if(config.hasFeature("unittest")) {
frame.setSlot("Factory", "FactoryMock");
}
else {
frame.setSlot("Factory", "EngineFactory");
}
}
}
63. Testing untestable code
Nach der Generierung - Testcase
public class Car {
private Engine engine;
public Car(String engine) {
this.engine = FactoryMock.getByType(engine);
}
}
64. Testing untestable code
Nach der Generierung - Applikation
public class Car {
private Engine engine;
public Car(String engine) {
this.engine = EngineFactory.getByType(engine);
}
}