SlideShare uma empresa Scribd logo
1 de 18
Testes Integrados Automatizados com
                      ArcObjects
Testes Integrados
Motivação
“You should be able to run the tests in the production environment, in the QA
environment, and on your laptop while riding home on the train without a
network.”
James Grenning
Estruturando
A Solução do Problema
Geodatabase.cs
void OpenGeodatabase();
void CloseGeodatabase(bool saveEdits);
int InserirRegistroGis(List<ListItem> itens, string nomeTabela);
int InserirFeatureGis(List<ListItem> itens, string nomeClasse, IGeometry geometria);
int CriarRegistroGis(List<ListItem> itens, string nomeTabela);
int AtualizarRegistroGis(List<ListItem> itens, string nomeTabela);
bool AtualizarRegistroGis(List<ListItem> itens, IRow row);
bool WorkspaceEmEdicao();
bool ExisteRegistro(string nomeTabela, string campoChave, int valor);
ITable GetTable(string tableName);
IFeatureClass GetFeatureClass(string className);
List<ListItem> GetRow(int oid, string tableName);
[ClassInitialize()]
                                   Test.cs                                  Test.cs
    public static void MyClassInitialize(TestContext testContext)
    {
      try
      {
         geodatabase = new Geodatabase(null, Geodatabase.InitializeLicense.Intialize);
      }
      catch (Exception ex)
      {
         Assert.Inconclusive("Can't initialize license" + "Trace:" + ex.Message);
      }
    }
[TestInitialize()]
    public void MyTestInitialize()
    {
      geodatabase.AbrirGeodatabase();
    }

[TestCleanup()]
    public void MyTestCleanup()
    {
      geodatabase.FecharGeodatabase(true);
    }
A questão
das Licenças Esri
Licenças
ArcGIS 10

public static void InitializeLicenseEditor()
    {
       RuntimeManager.BindLicense(ProductCode.Desktop, LicenseLevel.Standard);
       RuntimeManager.Bind(ProductCode.Desktop);
    }

  ArcGIS 9.x

  public static void InitializeLicenseEditor()
      {
         AoInitialize aoInitializer = new AoInitializeClass();
         aoInitializer.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcEditor);
      }
Licenças
ArcFM 10
public mmLicenseStatus InicializaLicencaArcFm(mmLicensedProductCode minerLicense)
   {
      this.licenseStatus = CheckOutLicensesArcFM(minerLicense);
      return licenseStatus;
   }

   public void FinalizaLicencaArcFM()
   {
     m_MMAppInitialize.Shutdown();
   }

private mmLicenseStatus CheckOutLicensesArcFM(mmLicensedProductCode productCode)
    {
      m_MMAppInitialize = new MMAppInitializeClass();
      mmLicenseStatus licenseStatus = default(mmLicenseStatus);
      licenseStatus = m_MMAppInitialize.IsProductCodeAvailable(productCode);

       if (licenseStatus == mmLicenseStatus.mmLicenseAvailable)
       {
          licenseStatus = m_MMAppInitialize.Initialize(productCode);
       }
       return licenseStatus;
   }
Benefícios
  Esperados
Melhor
  entendimento                              Podem
   do fluxo de          Real               ser realizados no
    dados no          cobertura de      cliente identificando
  Geodatabase            Código             problemas não
                                             encontrados




                       Testes
                   Integrados podem
Identificação       contar mais sobre          Ter
  mais rápida de   uma estória do que    Os desenvolvedores
                          uma            muito mais seguros
 problemas novos                             e confiantes
                     documentação
                       abrangente
Vendo
na prática
Fazer um ^ produto
O que vem
depois
Nossa missão é: tornar o feedback
                                    Total
erocha@   img.com.br

Mais conteúdo relacionado

Semelhante a Testes Integrados Automatizados com ArcObjects

Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-androidAlberto Souza
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e CatchUilian Ries
 
TDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSTDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSFábio Miranda
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Androidjoaobmonteiro
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.orgBarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.orgjqrd
 
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Fabio Vieira Mello
 

Semelhante a Testes Integrados Automatizados com ArcObjects (20)

Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Workshop05
Workshop05Workshop05
Workshop05
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
RYSYS Overview
RYSYS OverviewRYSYS Overview
RYSYS Overview
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e Catch
 
TDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSTDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOS
 
Java e Cloud Computing
Java e Cloud ComputingJava e Cloud Computing
Java e Cloud Computing
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Java webfinance
Java webfinanceJava webfinance
Java webfinance
 
Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.orgBarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
 
API Apontador
API ApontadorAPI Apontador
API Apontador
 
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!
 

Mais de Ezequias Rodrigues da Rocha (6)

Innovation project scorecard 1.3 pt br
Innovation project scorecard 1.3 pt brInnovation project scorecard 1.3 pt br
Innovation project scorecard 1.3 pt br
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
Sprint review and retrospective
Sprint review and retrospectiveSprint review and retrospective
Sprint review and retrospective
 
21 Irrefutable Laws of Leadership
21 Irrefutable Laws of Leadership21 Irrefutable Laws of Leadership
21 Irrefutable Laws of Leadership
 
Apresentação Campus Party Recife
Apresentação Campus Party RecifeApresentação Campus Party Recife
Apresentação Campus Party Recife
 
ArcGIS Class Generator
ArcGIS Class GeneratorArcGIS Class Generator
ArcGIS Class Generator
 

Testes Integrados Automatizados com ArcObjects

  • 4.
  • 5. “You should be able to run the tests in the production environment, in the QA environment, and on your laptop while riding home on the train without a network.” James Grenning
  • 7. Geodatabase.cs void OpenGeodatabase(); void CloseGeodatabase(bool saveEdits); int InserirRegistroGis(List<ListItem> itens, string nomeTabela); int InserirFeatureGis(List<ListItem> itens, string nomeClasse, IGeometry geometria); int CriarRegistroGis(List<ListItem> itens, string nomeTabela); int AtualizarRegistroGis(List<ListItem> itens, string nomeTabela); bool AtualizarRegistroGis(List<ListItem> itens, IRow row); bool WorkspaceEmEdicao(); bool ExisteRegistro(string nomeTabela, string campoChave, int valor); ITable GetTable(string tableName); IFeatureClass GetFeatureClass(string className); List<ListItem> GetRow(int oid, string tableName);
  • 8. [ClassInitialize()] Test.cs Test.cs public static void MyClassInitialize(TestContext testContext) { try { geodatabase = new Geodatabase(null, Geodatabase.InitializeLicense.Intialize); } catch (Exception ex) { Assert.Inconclusive("Can't initialize license" + "Trace:" + ex.Message); } } [TestInitialize()] public void MyTestInitialize() { geodatabase.AbrirGeodatabase(); } [TestCleanup()] public void MyTestCleanup() { geodatabase.FecharGeodatabase(true); }
  • 10. Licenças ArcGIS 10 public static void InitializeLicenseEditor() { RuntimeManager.BindLicense(ProductCode.Desktop, LicenseLevel.Standard); RuntimeManager.Bind(ProductCode.Desktop); } ArcGIS 9.x public static void InitializeLicenseEditor() { AoInitialize aoInitializer = new AoInitializeClass(); aoInitializer.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcEditor); }
  • 11. Licenças ArcFM 10 public mmLicenseStatus InicializaLicencaArcFm(mmLicensedProductCode minerLicense) { this.licenseStatus = CheckOutLicensesArcFM(minerLicense); return licenseStatus; } public void FinalizaLicencaArcFM() { m_MMAppInitialize.Shutdown(); } private mmLicenseStatus CheckOutLicensesArcFM(mmLicensedProductCode productCode) { m_MMAppInitialize = new MMAppInitializeClass(); mmLicenseStatus licenseStatus = default(mmLicenseStatus); licenseStatus = m_MMAppInitialize.IsProductCodeAvailable(productCode); if (licenseStatus == mmLicenseStatus.mmLicenseAvailable) { licenseStatus = m_MMAppInitialize.Initialize(productCode); } return licenseStatus; }
  • 13. Melhor entendimento Podem do fluxo de Real ser realizados no dados no cobertura de cliente identificando Geodatabase Código problemas não encontrados Testes Integrados podem Identificação contar mais sobre Ter mais rápida de uma estória do que Os desenvolvedores uma muito mais seguros problemas novos e confiantes documentação abrangente
  • 15. Fazer um ^ produto
  • 17. Nossa missão é: tornar o feedback Total
  • 18. erocha@ img.com.br