BT

Novidades O InfoQ vem desenvolvendo uma série de novas funcionalidades para melhorar sua experiência com o site. Confira!

Google tornou Open-Source seu Framework Mocking C++

| por Abel Avram Seguir 3 Seguidores , traduzido por Felipe Rodrigues Seguir 0 Seguidores em 16 dez 2008. Tempo estimado de leitura: 1 minuto |

Após tornar open-source seu framework C++ de teste a poucos meses atrás, o Google acabou de repetir o movimento com o Google C++ Mocking Framework (Google Mock) sob a BSD license.

O Google Mock é usado em mais de 100 projetos no Google e é inspirado pelo jMock e EasyMock, de acordo com Zhanyong Wan, um engenheiro de software do Google. O framework pode ser usado no Linux, Windows ou Mac OS X e é direcionado a desenvolvedores C++. Zhanyong exemplifica o mocking:

class TaxServer {   // Returns the tax rate of a location (by postal code) or -1 on error.
  virtual double FetchTaxRate(
    const string& postal_code) = 0;
  virtual void CloseConnection() = 0;
};

class MockTaxServer : public TaxServer {     // #1
  MOCK_METHOD1(FetchTaxRate, double(const string&));
  MOCK_METHOD0(CloseConnection, void());
};
TEST(ShoppingCartTest,  StillCallsCloseIfServerErrorOccurs) {
  MockTaxServer mock_taxserver;              // #2
  EXPECT_CALL(mock_taxserver, FetchTaxRate(_)).

WillOnce(Return(-1));                   // #3
  EXPECT_CALL(mock_taxserver, CloseConnection());
  ShoppingCart cart(&mock_taxserver);        // #4
  cart.CalculateTax();  // Calls FetchTaxRate()
                        // and CloseConnection().
}                                            // #5

  1. Derive uma classe mock de uma interface. Para cada método virtual, conte quantos argumentos ela tem, nomeie o resultado n e a defina usando MOCK_METHODn, aqueles arguemtnos são o nome e o tipo do método.

  2. Crie uma instância da classe Mock. Ela será usada onde você normalmente usaria o objeto real.

  3. Defina as expectativas do Mock Object (Como ele será usado? O que ele vai fazer?). Por exemplo, o primeiro EXPECT_CALL diz que FetchTaxRate() será chamado e irá retornar um erro. O underscore (_) é um matcher que diz que o argumento pode ser qualquer coisa. O Google Mock possue muitos matchers que você pode usar para especificar precisamente o que o argumento deve ser. Você pode também definir seu próprio matcher ou usar um valor exato.

  4. Exercite código que usa o mock object. Você irá receber um erro imediatamente se o método mock for chamado mais vezes do que o esperado ou com argumentos errados.

  5. Quando o mock object é destruído, ele verifica se todas as expectativas definidas foram atingidas.

Algins links úteis: Home Page. Docuementação Completa. Download. Google Mock para Iniciantes é uma introdução rápida ao Google Mock, acompanhado de exemplos e explicações.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT