Considerando que você já estudou sobre os conceitos do teste unitário, é hora de passar a compreender o seguinte: como desenvolver classes testáveis.
Infelizmente nem sempre é possível implementar testes unitários em sistemas existente, porque eles não foram desenvolvidos visando a testabilidade.
Pode ser isso o que está te deixando “empacado”, sem saber por onde começar.
Veja um exemplo simples de código não testável - ou seja, saindo do mundo ideal dos exemplos e entrando no perigoso mundo das aplicações legadas 
BigDecimal calcularValorDivida(long codigoCliente) {
DividaDao dividaDao = new DividaDaoImpl();
BigDecimal valorPrincipal = dividaDao.obterValorDividaPorCliente(codigoCliente);
JurosService jurosService = new InitialContext().lookup("java:/servicos/JurosService");
BigDecimal taxaJuros = jurosService.obterTaxaJurosVigente();
BigDecimal dividaTotal = /* aplica formula de calculo de juros sobre a divida principal */
return dividaTotal;
}
Não há como fazer testes unitários desse jeito, porque simplesmente não existe uma idéia de “unidade”. É tudo um bolo só, tudo muito acoplado, a fórmula de cálculo (que é o coração desse método, e que provavelmente seria o maior ponto de atenção dos testes unitários) não pode ser testada isoladamente.
Por outro lado, se o desenvolvedor criasse esse código pensando em testabilidade, seria algo mais parecido com isso:
class CalculoDivida {
private DividaDao dividaDao;
private JurosService jurosService;
BigDecimal calcularValorDivida(long codigoCliente) {
BigDecimal valorPrincipal = dividaDao.obterValorDividaPorCliente(codigoCliente);
BigDecimal taxaJuros = jurosService.obterTaxaJurosVigente();
BigDecimal dividaTotal = /* aplica formula de calculo de juros sobre a divida principal */
return dividaTotal;
}
/* Restante da classe */
Agora melhorou… O Dao e o serviço externo se tornaram dependências que deverão ser injetadas. Nosso método de regra de negócio is free! DividaDao e JurosService são interfaces, o que significa que podem ser mockados.
Para terminar, vamos ver nossa classe de teste unitário (aqui estamos vendo apenas um caso de teste, crie quantos forem necessários para cobrir todas as situações possíveis!)
public void testCalculoValorDivida() {
CalculoDivida calc = new CalculoDivida();
// Usando o JMock para simular um DAO que retorne valor principal de 1000.00
DividaDao dividaDao = mock(DividaDao.class)
.expects(once())
.method("obterValorDividaPorCliente")
.with(eq(1L))
.will(returnValue(new BigDecimal("1000.00")));
calc.setDividaDao(dividaDao);
// O JurosService vai retornar taxa de 1%
JurosService jurosService = mock(JurosService.class)
.expects(once())
.method("obterTaxaJurosVigente")
.will(returnValue(new BigDecimal("0.01"))); // 0.01 == 1.0%
calc.setJurosService(jurosService);
BigDecimal valorCalculado = calc.calcularValorDivida(1L);
// Aqui vc usa o seu conhecimento do negocio para calcular o valor previsto no resultado.
// Como todas as variaveis estao sob controle, basta verificar se tudo deu certo.
assertEquals(new BigDecimal("1025.87"), valorCalculado);
}
OBS: Fiz a sintaxe do jmock aqui de cabeça, não ligue se tiver algo errado!