Olá
-
O que são propriedades JMX?
-
Você testa estas classes que usam estas tais “propriedades JMX”?
[]s
Luca
Olá
O que são propriedades JMX?
Você testa estas classes que usam estas tais “propriedades JMX”?
[]s
Luca
Propriedades injetadas via JMX.
Sim, consigo testar.
[]'s
Eu tb nunca tive dificuldade para testes com Singleton.
Onde, normalmente, eu teria este problema?
Olá
Eu tb nunca tive dificuldade para testes com Singleton.
Onde, normalmente, eu teria este problema?[/quote]
Como faz testes unitários de uma classe Singleton?Talvez vocês tenham conseguido resolver um problema que muita gente ainda não conseguiu de forma satisfatória.
[]s
Luca
[quote=Luca]
Como faz testes unitários de uma classe Singleton?Talvez vocês tenham conseguido resolver um problema que muita gente ainda não conseguiu de forma satisfatória.[/quote]
Ou de repente eu estou fazendo o teste errado por inexperiencia ou falta de visão. E foi por esta duvida que eu lhe perguntei e volto a lhe perguntar: onde há o problema em testar um Singleton?!?
[quote=Luca]Olá
Eu tb nunca tive dificuldade para testes com Singleton.
Onde, normalmente, eu teria este problema?[/quote]
Como faz testes unitários de uma classe Singleton?Talvez vocês tenham conseguido resolver um problema que muita gente ainda não conseguiu de forma satisfatória.
[]s
Luca[/quote]
verifico se ele carrega e armazena as propriedades corretamente, e ele também é utilizado nos unit tests de classes que necessitam de suas propriedades.
isso não é suficiente ?
se não, por favor, dê exemplos práticos.
[]'s
Seguindo a mesma linha do Rafael, e refinando mais os testes automatizados, se vc testar, por exemplo, o seu método de negócio que necessite de informações contidas neste Singleton, vc estará indiretamente testando o próprio Singleton, correto?
Só consigo pensar em uma: Quando você precisa de um programa final de tamanho pequeno (e, portanto, não quer sobrecarregar seu usuário com um framework de DI) para um applet ou uma aplicação mobile. Nesse caso provavelmente a aplicação nem terá muitas threads e classloaders mesmo.
Ainda assim, usar o singleton como um repositório de variáveis globais quase nunca é uma boa idéia. Se puder, fuja dele.
O problema com a testabilidade dos singletons são a criação de Mocks com teste unitarios. Por exemplo, para testar uma action que faz um consulta em um banco de dados, vc não deve deixar seu DAO se conectar com o banco de dados, pois isto seria um teste de integração e não unitario. A solução para isto é criar um Mock, ou seja, substituir a camada do DAO por um Mock.
Agora imagine que este DAO é um singleton (arg o pior que é tem disto por ai ) Como vc iria fazer para substituir o DAO sem mexer no codigo?
Agora imagine que vc esta usando a injeção de dependencia do spring ou mesmo o conjuto PicoContanier + NanoContainer, para substituir o DAO por um mock bastaria alterar uma simples configuração em um XML.
[]'s
Um outro detalhe. No livro design patterns, também se referem a código C++.
No C++, algumas característica tornam o uso do singleton mais vantajoso:
Ainda assim, numa aplicação Java comercial comum, não há porque usar singletons hoje em dia. Exceto talvez no caso que eu citei ali (uma restrição forte de equipamento ou tamanho do executável final).
Vc utiliza um singleton para ler um properties?? é isto que eu estou entendo?
PS: Como eu faço para escrever “Não sei quem disse” em uma citação?
Sim, tenho uma série de propriedades que são gerenciadas via JMX, e a aplicação tem acesso a elas por meio de singletons, que nada mais são do que javabeans contendo estas propriedades.
Isso faz o acesso a essas propriedades muito simples, por isso não entendo o porque de toda essa alergia a singletons.
[]'s
[quote=ovelha]
PS: Como eu faço para escrever “Não sei quem disse” em uma citação?[/quote]
Na tag “quote”, coloque o nome: “quote=nomeDeQuemEscreveu”.
Se voce clicar no botão citar, isto vai ser feito automaticamente.
também acho estranho o uso de métodos estáticos no FacesContext. Fica muito complicado criar testes para os componentes que acessam o FacesContext.
Apenas reforçando:
cuidado com singletons e métodos estáticos. Os dois dificultam e muito os testes unitários.
também acho estranho o uso de métodos estáticos no FacesContext. Fica muito complicado criar testes para os componentes que acessam o FacesContext.
Apenas reforçando:
cuidado com singletons e métodos estáticos. Os dois dificultam e muito os testes unitários.[/quote]
Bom então o problema não é com o padrão singleton e sim com os testes unitarios? o que deve ser encontrado é uma solução pra testes unitarios.
Oras se o banco x não funciona direito com Java, por que vou trocar o banco? vou trocar o java. rsrsr :twisted:
Olá
[]s
Luca
[quote=Rafaelprp]Sim, tenho uma série de propriedades que são gerenciadas via JMX, e a aplicação tem acesso a elas por meio de singletons, que nada mais são do que javabeans contendo estas propriedades.
Isso faz o acesso a essas propriedades muito simples, por isso não entendo o porque de toda essa alergia a singletons.
[]'s[/quote]
http://c2.com/cgi/wiki?SingletonsAreEvil
http://www.guj.com.br/posts/list/14615.java
http://blog.caelum.com.br/2006/08/08/singletons-e-static-perigo-a-vista/
http://forum.java.sun.com/thread.jspa?threadID=749491&messageID=4286396
Bem, isso é tudo que tenho aqui dos meus favoritos, não coloquei algumas paginas como o do shoes pq nao consegui acessar, acho que está off.
Boa leitura pra todos.
Não, o problema é que singleton e métodos estáticos aumentam o acoplamento das classes. Quando existe um forte acoplamento, fica difícil criar testes unitários.