задача: разработать тестовый фреймворк, для тестирования дао, фасадов и пр.. там сильно много логики напихано, т.е. должно быть много разных бинов и соответсвенно для почти каждого свои условия выполнения.
вот к чему я пришёл
так выглядит сам тест:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
...
public void testSave() {
factory.add( new DefaultBuilder(), new DefaultSaveValidator());
try {
for (Iterator it = factory.getValidatorsIterator(); it.hasNext();) {
IValidator validator = (IValidator) it.next();
Syslog.info( this , "Validator: " + validator.getClass().getName());
validator.preValidate();
validator.validate();
validator.postValidate();
}
} catch (ApplicationException e) {
e.printStackTrace();
assertTrue("Validation error", false);
}
assertTrue("Validation succesful", true);
}
...
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
public class Factory {
private List validators;
private static final Factory instance;
static {
instance = new Factory();
}
private Factory() {
validators = new ArrayList();
}
public static Factory getInstance() {
return instance;
}
public Iterator getValidatorsIterator() {
return validators.iterator();
}
public void add(IBuilder builder, IValidator validator) {
try {
builder.buildBean();
Bean bean = builder.getResult();
validator.setBean(bean);
validators.add(validator);
} catch (ApplicationException e) {
e.printStackTrace();
}
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
public interface IBuilder {
public void buildBean() throws ApplicationException;
public Bean getResult();
}
public abstract class AbstractBuilder implements IBuilder {
protected Bean bean;
public Bean buildDefault() {
Bean bean= null ;
bean = new Bean();
fillDefaultlValues(bean);
return bean;
}
.........
public class DefaultBuilder extends AbstractBuilder {
public Bean getResult() {
return bean;
}
public void build() {
bean = buildDefault();
}
}
public interface IValidator {
public void setBean(Bean bean);
public void preValidate() throws ApplicationException;
public void validate() throws ApplicationException;
public void postValidate() throws ApplicationException;
}
public abstract class AbstractValidator implements IValidator {
protected Bean bean;
protected Facade getFacade() {
Facade facade = null ;
try {
facade = (Facade) Context.getInstance()
.getBean("Facade");
} catch (ApplicationException e) {
e.printStackTrace();
}
return facade;
}
public abstract void setBean(Bean bean);
.........
public class DefaultSaveValidator extends AbstractValidator {
public void validate() throws ApplicationException {
getFacade().save(bean);
}
public void setBean(Bean bean) {
this .bean = bean;
}
}
вобщем что-то мне здесь не нравиться...
только не знаю что...
пните плз где я не прав