BT

Google tornou Open-Source seu Framework Mocking C++

por Abel Avram , traduzido por Felipe Rodrigues em 16 Dez 2008 |

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.