you should not use setters, or even have them for dependency fields.
the reason is that it does not scale because if you have nested
dependencies you would have to manually wire them all and provide
public setters even for private dependencies.
it is much easier to simply install mocks into the dependency library
and have those injected by salve.
eg
class mocklocator implements locator {
private final Object dependency;
public mocklocator(Object dependency ) { this.dependency=dependency; }
public Object locate(Key key) {
if (key.getType().equals(dependency.getClass()) {
return dependency;
} else { return null; }
}
}
class FooTest {
setup() { DependencyLibrary.clear(); }
teardown() { DependencyLibrary.clear(); }
testFoo() {
MockDependency dependency=new MockDependency();
DependencyLibrary.addLocator(new mocklocator(dependency));
Foo foo=new Foo();
foo.dosomething();
^ foo can now get dependency injected into it
}
}
-igor