xUnit é o nome genérico para qualquer estrutura de testes automáticos unitários. O teste unitário ou de unidade é um processo que consiste na verificação da menor unidade do projecto de software.
Em sistemas construídos com uso de linguagens orientadas a objetos, um teste envia uma mensagem a um método, uma classe ou mesmo um objeto e verifica se tem o retorno previsto.
O teste unitário é da responsabilidade do próprio programador durante a implementação, isto é, após codificar uma classe, por exemplo, seria executado o teste de unidade.
Geralmente, um teste de unidade executa um método individualmente e compara uma saída conhecida após o processamento da mesma. O teste unitário é considerado o primeiro de uma cadeia de testes à qual um software pode ser submetido, nesta fase, não se pretende testar toda a funcionalidade de uma aplicação.
Sendo um processo fundamental no desenvolvimento de uma aplicação, o teste de software para ser considerado tem de apresentar características tais como: ser operável, observável, controlável, ter decomposição, simplicidade, estabilidade e compreensão, um bom teste é aquele que tem uma elevada probabilidade de revelar um erro, e um teste para ser bem sucedido é aquele que revele erros ainda não revelados. Estes testes têm de ser sempre documentados e reproduzíveis. A vantagem deste tipo de testes é que é feito sobre um módulo (classe). Após a escrita do código escreve-se o teste, ou, primeiro o teste e depois o código, dependendo do programador. Esta técnica permite que o teste encontre erros mais facilmente, visto que testa por classes, em vez de o fazer ao código completo. O tempo de debug tem tendência a decrescer, o trabalho também, o que implica a redução do custo total de desenvolvimento do software. A importância do xUnit na engenharia de software é elevada, pois com esta ferramenta podemos efectuar testes de melhor qualidade, comparados com os testes convencionais, isto é, podemos observar mais facilmente os erros, e verificar com melhor fiabilidade os valores das nossas variáveis e funções. Este tipo de ferramentas tem como objectivo fazer testes para que se possa confirmar a boa qualidade do projecto, de forma a obter maior confiança no final.