Fénix Framework


P: É possível ter uma declaração de um papel (role) de uma relação sem nome (anónima). De acordo com a documentação isto quereria dizer que não seriam gerados os métodos associados a esta declaração do papel. Por exemplo, é possível ter a seguinte relação entre as classes A e B?
relation AHasB { 
  A playsRole ;
  B playsRole b;
}
R: Na versão actual da Fénix Framework, se não se especificar um nome na declaração de um papel (role) quando se está a definir uma relação entre duas classes de facto não é gerado qualquer método relacionado com esta declaração de papel anónima. Mas, infelizmente a aplicação não funciona correctamente. Actualmente, a Fénix Framework precisa que existam os métodos de gestão da associação nos dois extremos. Assim, a declaração anónima de um papel deve ser evitada.

Testes de Software


P: Na classe BubbleDocsServiceTest está definido a declaração do método getSpreadSheet, o qual deverá devolver uma folha de cálculo com o nome igual ao parâmetro recebido como argumento deste método. No entanto, o nome de uma folha não é único. Este método está correcto?
R: De facto, o método deveria devolver uma lista. No entanto, por razões de simplificação da concretização deste método e dos próprios testes, e dado que nos testes controlamos o estado da aplicação, sabe-se que no máximo há apenas uma folha de cálculo com o nome dado. Assim,este método apenas necessita de devolver a primeira folha de cálculo com o nome dado.

P: Qual é a melhor forma de concretizar o caso de teste de sucesso do serviço de exportação?R: A concretização de um ou mais casos de teste que exercitam o caso de sucesso do serviço de exportação não é fácil dado que é necessário verificar se o documento XML foi bem gerado. Uma hipótese é utilizar a linguagem XPATH, que permite verificar se o documento XML está bem construído. Outra alternativa, que será aceite pelo corpo docente de Engenharia de Software, é utilizar o método de importação já disponível na camada de domínio para criar uma folha de cálculo dado o documento XML obtido através do serviço de exportação. Depois, será necessário comparar as duas folhas de cálculo, a original e a importada. Para ver se duas folhas são iguais, é preciso ver se têm as mesmas dimensões, nome e número de células preenchidas. Além disto, é ainda necessário comparar o conteúdo de cada célula preenchida da folha de cálculo original, com o conteúdo da célula correspondente da folha importada. Para comparar dois conteúdos, vê-se se os dois conteúdos têm a mesma classe (utilizar o método getClass) e se o valor devolvido pelos dois conteúdos é igual.