Ola pessoal,hoje vou demonstrar como testar um lancamento de excecao com PHPUnit.Isso na verdade e bem simples, mas vou expor um cenario em que eu estava quando utilizei.Segue cenario:class GmFactory{ /** * @param $modelo * @return Carro */ public function create($modelo) { if ($modelo == 'corsa') { return Corsa(); } else if ($modelo == 'astra') { return Astra(); } else { return null; } }}A classe 'GmFactory' e um Factory, ou uma fabrica. Essa classe constroi objetos do tipo Carro.Da forma em que ela esta neste momento, ela poderia retornar NULL e comprometer a execucao caso alguem utilize esta fabrica passando um modelo que ela nao sabe construir.No meu caso, eu rafatorei para que seja lancada um excecao caso alguem utilize a fabrica de forma errada, pois quem tiver que usar tem que saber quais modelos a fabrica constroi antes de querer utiliza-la.Com a refatoracao ficou desta forma:class GmFactory{ /** * @param $modelo * @return Carro * @throws InvalidArgumentException */ public function create($modelo) { if ($modelo == 'corsa') { return Corsa(); } else if ($modelo == 'astra') { return Astra(); } else { throw new InvalidArgumentException('Modelo invalido'); } }}Desta forma, quem quiser utilizar a fabrica precisa saber o que esta fazendo....Agora vamos ao testeclass GmFactoryTest extends PHPUnit_Framework_TestCase{ /** * @expectedException InvalidArgumentException */ public function testCreateWithException() { $gmFactory = new GmFactory(); $gmFactory->create('vectra'); } public function testCreateWithCorsa() { $gmFactory = new GmFactory(); $carro = $gmFactory->create('corsa'); $this->assertInstanceOf('Corsa', $carro); } public function testCreateWithAstra() { $gmFactory = new GmFactory(); $carro = $gmFactory->create('astra'); $this->assertInstanceOf('Astra', $carro); }}No PHPUnit existe a anottation @expectedException que marca o teste, e defini que esta execucao ira resultar em uma excecao. Para funcionar, apenas temos que marcar o teste que queremos testar e definirmos qual o tipo de excecao sera lancada, com isso o PHPUnit ja identifica e mostra o resultado do teste como sucesso.Bom pessoal e isso ai, abraco! Ola pessoal,hoje irei compartilhar um conhecimento, referente ao Git(controle de versao), que foi adquirido com o auxilio de alguns parceiros: http://profpv.blogspot.com.br/ e http://wfigsilva.blogspot.com.br/ e mais alguns companheiros de trabalho.Criei um documento com comandos para o Git que ja foram utilizados para salvar muitas vidas, inclusive a minha.O documento esta em um projeto no Bitbucket, em: https://bitbucket.org/pcelta/git-commands.Ele e apenas um .txt, pois a ideia e melhora-lo e compartilha-lo....Peco a todos que 'forkem' o projeto, utilizem e se possivel mandem atualizacoes, pois um material igual a esse nao achei em nenhum outro lugar e aposto que todos irao usufruir com prazer os comandos aqui disponibilizados.Segue o conteudo do arquivo na data atual:<Comandos GIT>[ Commits ]git add -A// Adiciona todas as alteracoes, inclusive arquivos novos, para commitgit commit -m commit descritpion// Consolida as alteracoes adicionadas ao commit, com uma descricaogit commit -a -m "commit description"// Adiciona e consolidada as alteracoes, mas nao adiciona novos arquivos[ Branchs ]git branch name_branch// cria um branch novo apartir do branch atualgit branch -m name_old_branch name_new_branch// renomear um branchgit branch nomebranch -d// Deleta um branch localmente atualizadogit branch nomebranch -D// Deleta branch localmente independente da situacao delegit push origin :nome_do_branch// Excluir branch remotogit branch -a// Lista branchs remotosgit push --force origin branchremoto//