Para testar Actions, não precisamos estender nada, porém temos que ficar atentos com as variáveis da classe, pois essas terão que ser informadas.
1) Pra começar, crie uma instancia da Action a ser testada:
private ArtigoEditAction action;
é essa variável que será utilizada para invocar os métodos, como também, setar as variáveis da Action.
2) setUp e tearDown pra deixar as coisas nos seus lugares:
0: protected void setUp() throws Exception3) A grande maioria desses testes consiste apenas em verificar o direcionamento:
1: {
2: super.setUp();
3: action = new ArtigoEditAction();
4: }
5:
6: protected void tearDown() throws Exception
7: {
8: action = null;
9: super.tearDown();
10: }
0: public void testExecute() throws Exception4) Como as Actions não retornam os objetos que usaremos nas páginas, eles são populados e passados por request (eu acho), é importante verificar o estado da variável:
1: {
2: assertEquals(action.execute(), "success");
3: }
para o método:
0: public String listNormas() throws Exceptiona variável artigo é alterada, então não devemos testar somente o retorno, devemos testar também o estado dessa variável após o método ser executado:
1: {
2: artigo = artigoManager.findById(artigo.getId());
3: return Action.SUCCESS;
4: }
0: public void testList() throws Exception5) Para efeito de 100% de cobertura, eventualmente você terá que forçar umas chamadas de get ou set de alguma propriedade, pois é bem possível que esta não seja invocada naturalmente:
1: {
2: Artigo artigo = new Artigo();
3: artigo.setId(1L);
4:
5: Artigo artigoCheio = new Artigo();
6: artigoCheio.setId(1L);
7: artigoCheio.setResumo("resumo");
8:
9: action.setArtigo(artigo);
10:
11: artigoManager.expects(once()).method("findById").
12: with(eq(artigo.getId())).will(returnValue(artigoCheio));
13:
14: assertEquals(action.getArtigo().getResumo(), null);
15: assertEquals(action.listNormas(), "success");
16: assertEquals(action.getArtigo().getResumo(), "resumo");
17: }
* Um plugin como o eclEmma pode te ajudar muito nessas horas.
0: public void testCobrirGetsSets()
1: {
2: Collection vendedores = new ArrayList();
3: action.setVendedores(vendedores);
4: action.getDataFinalVendas();
5: action.getProdutoPacotes();
6: action.getProdutoPacote();
7: action.getDataInicioVendas();
8: action.getVendedor();
9: }
Só isso, fácil fazer teste para as Actions, né!? :P Se encontrar alguma dificuldade postarei aqui, mas acabou a desculpa de não fazer testes nas Actions.