Melhores Práticas de Teste de Classe Apex no Salesforce (2023)

Neste artigo, discutiremos as melhores práticas de teste de classe Apex no Salesforce. O teste de unidade é uma parte essencial do desenvolvimento de software, pois garante que o código esteja funcionando corretamente e atenda aos requisitos esperados. No contexto do Salesforce, o teste de classe Apex é usado para testar a lógica de negócios e garantir que o código Apex esteja funcionando corretamente.

O que testar em Apex?

Antes de discutirmos as melhores práticas de teste de classe Apex, é importante entender o que deve ser testado em Apex. Os testes de unidade em Apex devem cobrir os seguintes componentes:

  1. Registros individuais: Isso inclui testar se um único registro produz o resultado correto e esperado.
  2. Registros em massa: Qualquer código Apex, como acionadores, classes ou extensões, pode ser usado para 1 a 200 registros. Portanto, é importante testar não apenas o caso de um único registro, mas também os casos em massa.
  3. Cenários positivos: Esse tipo de teste de componente espera que o sistema salve um registro sem erros.
  4. Cenários negativos: Esse tipo de teste de componente espera que o sistema retorne um erro.
  5. Usuário restrito: Teste se um usuário com acesso restrito aos objetos usados no código vê o comportamento esperado, ou seja, se ele pode executar o código ou receber mensagens de erro.

Melhores práticas de teste de classe Apex

Aqui estão algumas das melhores práticas a serem seguidas ao escrever casos de teste eficazes em Apex:

  1. Inicie a classe de teste com a anotação @isTest: É importante marcar a classe de teste com a anotação @isTest para indicar que ela é uma classe de teste.
  2. Foco em 90%+ de cobertura de código: Para implantar no ambiente de produção, é necessário ter pelo menos 75% de cobertura de código. No entanto, é recomendável focar em 90% ou mais de cobertura de código para garantir uma cobertura abrangente de todos os casos de uso.
  3. Um comando assert por método: Sempre coloque comandos assert para testes negativos e positivos. Use System.assert(condition, msg), System.assertEquals(expected, actual, msg) e System.assertNotEquals(expected, actual, msg) para verificar as condições esperadas.
  4. Use @testSetup para criar registros de teste: Use a anotação @testSetup para criar registros de teste uma vez em um método e usá-los em todos os métodos de teste na classe de teste. Isso reduzirá a duplicação de código e economizará tempo.
  5. Evite usar IDs codificados: Evite usar IDs codificados em qualquer classe de teste ou classe Apex. Em vez disso, use métodos de criação de registros de teste para obter os IDs necessários.
  6. Limite de governança: Use Test.startTest() para obter um novo conjunto de limites de governança para a fase de execução do teste e Test.stopTest() para retornar aos limites anteriores. Certifique-se de que a classe de teste esteja testando os limites de governança usando a classe Limits.
  7. Teste de exceção: Teste as exceções que são capturadas nos métodos de produção, fornecendo os dados de teste que geram a exceção. Verifique o tipo de exceção e a mensagem de erro esperada.
  8. Exercite a funcionalidade do gatilho em massa: Use pelo menos 200 registros em seus testes para exercitar a funcionalidade do gatilho em massa.
  9. Como criar dados de teste: Existem várias maneiras de criar dados de teste em testes de classe Apex. Você pode criar dados manualmente para cada teste, carregar dados por meio de um recurso estático CSV, usar @testSetup para criar registros de teste ou criar uma classe de fábrica de teste. Escolha a abordagem que melhor se adequa às suas necessidades.

Considerações adicionais

Aqui estão algumas considerações adicionais a serem lembradas ao escrever testes de classe Apex:

  • Os dados criados nos métodos de teste de classe não são persistidos no banco de dados, portanto, não é necessário excluí-los manualmente.
  • Os testes de classe e métodos de teste não são contados como parte do limite de código do Salesforce.
  • Os comandos System.debug não são contados como parte do limite de código do Apex.
  • Use @isTest para tornar os métodos privados visíveis dentro das classes de teste.
  • Os testes de método não podem ser usados para testar chamadas de serviço da web. Use mocks de chamadas de serviço da web para testar essa funcionalidade.
  • Não é possível enviar e-mails a partir de métodos de teste.

Conclusão

Neste artigo, discutimos as melhores práticas de teste de classe Apex no Salesforce. É importante seguir essas práticas para garantir que o código Apex esteja funcionando corretamente e atenda aos requisitos esperados. Ao escrever casos de teste eficazes, você pode garantir a qualidade do seu código e evitar problemas futuros.

References

Top Articles
Latest Posts
Article information

Author: Kimberely Baumbach CPA

Last Updated: 28/11/2023

Views: 5939

Rating: 4 / 5 (61 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Kimberely Baumbach CPA

Birthday: 1996-01-14

Address: 8381 Boyce Course, Imeldachester, ND 74681

Phone: +3571286597580

Job: Product Banking Analyst

Hobby: Cosplaying, Inline skating, Amateur radio, Baton twirling, Mountaineering, Flying, Archery

Introduction: My name is Kimberely Baumbach CPA, I am a gorgeous, bright, charming, encouraging, zealous, lively, good person who loves writing and wants to share my knowledge and understanding with you.