Guia Básico de TDD em C#.Net

Tamanho: px
Começar a partir da página:

Download "Guia Básico de TDD em C#.Net"

Transcrição

1 Guia Básico de TDD em C#.Net Confidencial DBServer, 2016 Página 1 de 34

2 Índice 1. Introdução 3 2. Definições 3 3. Exemplo básico Criação do Projeto de Teste Criação dos primeiros testes Refatoração do código Tipos de Assert Assert.AreEqual Assert.AreNotEqual Assert.AreSame Assert.AreNotSame Assert.Fail Assert.Inconclusive Assert.IsTrue Assert.IsFalse Assert.IsInstanceOfType Assert.IsNotInstanceOfType Assert.IsNull Assert.IsNotNull Tipos de CollectionAssert CollectionAssert.AreEqual CollectionAssert.AreNotEqual CollectionAssert.AllItemsAreUnique CollectionAssert.Contains CollectionAssert.DoesNotContain 24 Oposto de CollectionAssert.Contains. Erro! Indicador não definido. 5.6 CollectionAssert.ReferenceEquals CollectionAssert.AllItemsAreNotNull CollectionAssert.AllItemsAreInstancesOfType CollectionAssert.IsSubsetOf CollectionAssert.IsNotSubsetOf 25 Oposto de CollectionAssert.IsSubsetOf ExpectedException Nunit Framework Instalação e configuração Executando testes no Nunit Fontes 34 Confidencial DBServer, 2016 Página 2 de 34

3 1. Introdução Este documento tem por finalidade apresentar o básico da metodologia TDD, bem como exemplos de sua utilização. 2. Definições TDD (Test Driven Development) é uma técnica que surgiu com o objetivo de produzir código confiável em menos tempo e com menos defeitos. No método tradicional de desenvolvimento o código é testado apenas no final da codificação, fazendo com que o desenvolvedor encontre muitos erros e necessite muito tempo debugando todo o código para tentar encontrar a razão e solucionar o problema e, frequentemente, encontrando novos erros resultantes da última correção realizada. O TDD, no entanto, traz uma nova abordagem: Teste primeiro, codifique depois. Ele se baseia no ciclo Vermelho-Verde-Refatora, que seria resumidamente: 1) Crie testes que garantam que o código funcione adequadamente. Como apenas os testes foram criados e nada foi codificado, os testes já iniciarão falhos. (Vermelho) 2) Após criar o teste, crie o código necessário para que o teste passe da forma mais simples possível e rode o teste novamente. (Verde) 3) Se o código passar no teste, então refatore o código aplicando boas práticas para torna-lo mais testável e repita o processo novamente. (Refatora) Vantagens: Código é testado constantemente, desde o início do projeto e não apenas no final. Erros são encontrados e resolvidos em sua origem. Para que o código seja testável, ele deve ser bem codificado, incentivando boas práticas de programação e forçando o desenvolvedor a usar seu raciocíno de forma mais elevada para evitar acoplamentos e dependências. Segurança para o desenvolvedor que sabe que qualquer erro será encontrado logo no início do desenvolvimento. Facilita a refatoração do código. Pode ser usado como documentação. Desvantagens: Desenvolvimento inicial mais lento, até desenvolvedor se adaptar a técnica. Necessidade de manutenção dos códigos de teste, além do código de produção. Confidencial DBServer, 2016 Página 3 de 34

4 3. Exemplo básico Como projeto de exemplo usaremos um projeto muito simples para a construção de um carro, que deverá seguir as seguintes regras de negócio: Deve possuir um motor Deve possuir duas portas Deve possuir quatro rodas 3.1 Criação do Projeto de Teste Crie um projeto do tipo Class Library no Visual Studio. Eu nomeei meu projeto como TDD.Domain. Confidencial DBServer, 2016 Página 4 de 34

5 Crie um novo projeto do tipo Test / Unit Test Project no Visual Studio. Eu nomeei meu projeto como TDD.Test: Criado o projeto, adicione referência ao projeto TDD.Domain no projeto TDD.Test: Confidencial DBServer, 2016 Página 5 de 34

6 3.2 Criação dos primeiros testes Baseando-se nas regras de negócio básicas, já podemos iniciar o desenvolvimento utilizando a metodologia TDD. Primeiro passo será a criação dos testes. Iniciaremos verificando se o carro possui um motor criando o método de teste DevePossuirMotor(), instanciando um objeto do tipo Carro e testando se o atributo Motor é vazio: Teste inicial /// <summary> /// Valida se atributo Motor da classe Carro não é nulo /// </summary> public void DevePossuirMotor() Carro carro = new Carro(); Assert.IsNotNull(carro.Motor); Para rodar o teste, basta clicar com o botão direito sobre o método ou sobre o nome da classe e selecionar Run Tests. Confidencial DBServer, 2016 Página 6 de 34

7 Ao tentar rodar este teste, recebemos um erro de compilação pois a classe Carro não existe, mas isto está correto pois a primeira etapa do TDD nos diz que devemos primeiro criar o teste e depois codificarmos da forma mais simples possível para fazer o teste passar. Então, vamos para a próxima etapa e iniciaremos a codificação de fato, criando a classe Carro e os demais objetos necessários (neste caso a classe Motor) para este teste ser aceito: public class Motor public double Potencia get; set; public string Combustivel get; set; public Motor() Criação das classes public class Carro public Motor Motor get; private set; public Carro() Sem o erro de compilação podemos rodar o teste, mas o teste irá falhar novamente já que o objeto Motor não foi inicializado: Confidencial DBServer, 2016 Página 7 de 34

8 Basta inicializarmos a propriedade Motor no construtor da classe Carro e testar novamente que o teste passará: Public Carro() Motor = new Motor(); Inicializando propriedade Nosso próximo passo será criar testes para validar se o carro possui 4 rodas e 2 portas. Novamente aqui os objetos Porta e Roda ainda não existem, bem como os atributos Portas e Rodas na classe Carro: Criando testes de quantidade de Portas e Rodas /// <summary> /// Valida se carro possui 4 rodas /// </summary> public void DevePossuirQuatroRodas() Carro carro = new Carro(); List<Roda> rodas = carro.rodas; Assert.AreEqual( 4, rodas.count ); /// <summary> /// Valida se carro possui 2 portas /// </summary> public void DevePossuirDuasPortas() Carro carro = new Carro(); List<Porta> portas = carro.portas; Assert.AreEqual( 2, portas.count ); Confidencial DBServer, 2016 Página 8 de 34

9 Testes prontos, vamos ao segundo passo codificar novamente, criando as classes e propriedades que foram identificadas no teste: public class Porta public bool EstaAberta get; set; public Porta() Criando classes e propriedades public class Roda public double Aro get; set; public Roda() public class Carro private List<Roda> _rodas; private List<Porta> _portas; public Motor Motor get; private set; public Lataria Lataria get; private set; public List<Roda> Rodas get return _rodas; public List<Porta> Portas get return _portas; public Carro() Motor = motor; Confidencial DBServer, 2016 Página 9 de 34

10 Lataria = lataria; _portas = new List<Porta>(); _rodas = new List<Roda>(); Ao executarmos o teste, obtivemos os erros abaixo, pois não incluímos nenhuma Porta ou Roda ao nosso Carro: Vamos incluir as portas e rodas em nosso carro, criando os métodos CriarPortas() e CriarRodas() e rodar o teste novamente, desta vez o teste passará: Incluindo portas e rodas no carro public class Carro private List<Roda> _rodas; private List<Porta> _portas; public Motor Motor get; private set; public Lataria Lataria get; private set; public List<Roda> Rodas get return _rodas; public List<Porta> Portas Confidencial DBServer, 2016 Página 10 de 34

11 get return _portas; public Carro() Motor = new Motor(); Lataria = new Lataria(); CriarRodas(); CriarPortas(); private void CriarPortas() _portas = new List<Porta>(); Porta portadireita = new Porta(); Porta portaesquerda = new Porta(); _portas.add( portadireita ); _portas.add( portaesquerda); private void CriarRodas() _rodas = new List<Roda>(); Roda rodadianteiradireita = new Roda(); Roda rodadianteiraesquerda = new Roda(); Roda rodatraseiradireita = new Roda(); Roda rodatraseiraesquerda = new Roda(); _rodas.add( rodadianteiradireita ); _rodas.add( rodadianteiraesquerda ); _rodas.add( rodatraseiradireita ); _rodas.add( rodatraseiraesquerda ); Confidencial DBServer, 2016 Página 11 de 34

12 3.3 Refatoração do código O terceiro princípio do TDD é a refatoração, tornar o código mais testável e, por consequência, tornar o código menos acoplado e mais coeso. Vamos então refatorar nosso código, iniciando pela criação de interfaces para cada um de nossos objetos e modificando os tipos dos objetos para interfaces ao invés de classes concretas dentro da classe Carro: public interface IRoda double Aro get; set; Criando interfaces public interface IPorta bool EstaAberta get; set; public interface ILataria string Cor get; set; public interface IMotor double Potencia get; set; string Combustivel get; set; public interface ICarro IMotor Motor get; set; List<IRoda> Rodas get; set; List<IPorta> Portas get; set; ILataria Lataria get; set; Fazendo classes implementarem e usarem interfaces public class Roda : IRoda public double Aro get; set; public Roda() Confidencial DBServer, 2016 Página 12 de 34

13 public class Porta : IPorta public bool EstaAberta get; set; public Porta() public class Lataria : ILataria public string Cor get; set; public Lataria() public class Motor : IMotor public double Potencia get; set; public string Combustivel get; set; public Motor() public class Carro : ICarro private List<IRoda> _rodas; private List<IPorta> _portas; public IMotor Motor get; private set; public ILataria Lataria get; private set; public List<IRoda> Rodas get return _rodas; Confidencial DBServer, 2016 Página 13 de 34

14 public List<IPorta> Portas get return _portas; public Carro() Motor = new Motor(); Lataria = new Lataria(); CriarRodas(); CriarPortas(); private void CriarPortas() _portas = new List<IPorta>(); IPorta portadireita = new Porta(); IPorta portaesquerda = new Porta(); _portas.add( portadireita ); _portas.add( portaesquerda); private void CriarRodas() _rodas = new List<IRoda>(); IRoda rodadianteiradireita = new Roda(); IRoda rodadianteiraesquerda = new Roda(); IRoda rodatraseiradireita = new Roda(); IRoda rodatraseiraesquerda = new Roda(); _rodas.add( rodadianteiradireita ); _rodas.add( rodadianteiraesquerda ); _rodas.add( rodatraseiradireita ); _rodas.add( rodatraseiraesquerda ); Confidencial DBServer, 2016 Página 14 de 34

15 Nosso código agora usa interfaces. Vamos adaptar nossos testes para utiliza-las: Aplicando interfaces em nosso teste /// <summary> /// Valida se atributo Motor da classe Carro não é nulo /// </summary> public void DevePossuirMotor() ICarro carro = new Carro(); Assert.IsNotNull(carro.Motor); /// <summary> /// Valida se carro possui 4 rodas /// </summary> public void DevePossuirQuatroRodas() ICarro carro = new Carro(); List<IRoda> rodas = carro.rodas; Assert.AreEqual( 4, rodas.count ); /// <summary> /// Valida se carro possui 2 portas /// </summary> public void DevePossuirDuasPortas() ICarro carro = new Carro(); List<IPorta> portas = carro.portas; Assert.AreEqual( 2, portas.count ); Outra refatoração que temos que realizar aqui é aplicar os conceitos de Injeção de Dependência e Inversão de Controle, que trazem algumas vantagens como: Desacoplamento de nosso código, pois não é necessário modificar uma classe sempre que uma de suas dependências for modificada. Facilita a reutilização de código. Torna o código testável. Vamos aplicar estes conceitos em nossa classe Carro, incluindo no construtor da classe as dependências Motor e Lataria. Desta forma, um Carro nunca poderá ser criado se não tiver um Motor e Lataria e principalmente nunca será o responsável por decidir como o Motor e Lataria serão criados, Confidencial DBServer, 2016 Página 15 de 34

16 essa responsabilidade será de quem criar o Carro. Outra vantagem é que um Carro poderá ser criado com diversos motores e latarias sem precisar alterar sua implementação: public class Carro : ICarro private List<IRoda> _rodas; private List<IPorta> _portas; Aplicando Injeção de Dependência public IMotor Motor get; private set; public ILataria Lataria get; private set; public List<IRoda> Rodas get return _rodas; public List<IPorta> Portas get return _portas; public Carro(IMotor motor, ILataria lataria) Motor = motor; Lataria = lataria; CriarRodas(); CriarPortas(); private void CriarPortas() _portas = new List<IPorta>(); IPorta portadireita = new Porta(); IPorta portaesquerda = new Porta(); _portas.add( portadireita ); _portas.add( portaesquerda); private void CriarRodas() _rodas = new List<IRoda>(); IRoda rodadianteiradireita = new Roda(); Confidencial DBServer, 2016 Página 16 de 34

17 IRoda rodadianteiraesquerda = new Roda(); IRoda rodatraseiradireita = new Roda(); IRoda rodatraseiraesquerda = new Roda(); _rodas.add( rodadianteiradireita ); _rodas.add( rodadianteiraesquerda ); _rodas.add( rodatraseiradireita ); _rodas.add( rodatraseiraesquerda ); Com a injeção de Dependência aplicada, agora o responsável por criar os objetos Motor e Lataria é nosso método de teste: Aplicando Injeção de Dependência em nosso teste /// <summary> /// Valida se atributo Motor da classe Carro não é nulo /// </summary> public void DevePossuirMotor() IMotor motor = new Motor(); ILataria lataria = new Lataria(); ICarro carro = new Carro(motor, lataria); Assert.IsNotNull(carro.Motor); /// <summary> /// Valida se carro possui 4 rodas /// </summary> public void DevePossuirQuatroRodas() IMotor motor = new MotorY(); ILataria lataria = new Lataria(); ICarro carro = new Carro(motor, lataria); List<IRoda> rodas = carro.rodas; Assert.AreEqual( 4, rodas.count ); /// <summary> /// Valida se carro possui 2 portas /// </summary> public void DevePossuirDuasPortas() IMotor motor = new Motor(); ILataria lataria = new Lataria(); Confidencial DBServer, 2016 Página 17 de 34

18 ICarro carro = new Carro(motor, lataria); List<IPorta> portas = carro.portas; Assert.AreEqual( 2, portas.count ); Para melhor exemplificar o uso da Injeção de Dependência e Inversão de Controle criei a classe MotorY, que também implementa a interface IMotor. No método DevePossuirQuatroRodas() o Carro foi criado com o motor MotorY, enquanto que nos métodos DevePossuirMotor() e DevePossuirDuasPortas() o Carro foi criado com o motor Motor, não sendo necessário em nenhum momento alterar a implementação da classe Carro para cria-lo e testa-lo com um motor diferente. Confidencial DBServer, 2016 Página 18 de 34

19 4. Tipos de Assert 4.1 Assert.AreEqual Verifica se dois valores são iguais. Para o tipo string, o Assert.AreEqual possui os parâmetros ignorecase e cultureinfo. Para os tipos double e float o Assert.AreEqual possui o parâmetros delta. Assert.AreEqual public void TestAssertEqual() IMotor motor = new Motor(); ILataria lataria = new Lataria(); ICarro carro = new Carro( motor, lataria ); List<IPorta> portas = carro.portas; Assert.AreEqual( 2, portas.count, "Erro encontrado [0]", DateTime.Now ); /// <summary> /// Assert.AreEqual para tipo string /// </summary> public void TestAssertEqualString() string str1 = "Valor string"; string str2 = "Valor string"; //Sem mensagem formatada de Erro Assert.AreEqual( str1, str1 ); //Com IgnoreCase Assert.AreEqual( str1, str1, true ); //Com IgnoreCase Assert.AreEqual( str1, str1, true, System.Globalization.CultureInfo.GetCultureInfo(1) ); //Com mensagem formatada de Erro Assert.AreEqual( str1, str2, "Erro encontrado [0]", DateTime.Now ); //Completa Assert.AreEqual( str1, str1, true, System.Globalization.CultureInfo.GetCultureInfo( 1 ), "Erro encontrado [0]", DateTime.Now ); Confidencial DBServer, 2016 Página 19 de 34

20 /// <summary> /// Assert.AreEqual para tipo double /// </summary> public void TestAssertEqualDouble() double dbl1 = 1.25; double dbl2 = 1.25; double delta = 0.5; //Sem mensagem formatada de Erro Assert.AreEqual( dbl1, dbl1 ); //Com delta Assert.AreEqual( dbl1, dbl1, delta ); //Com mensagem formatada de Erro Assert.AreEqual( dbl1, dbl2, "Erro encontrado [0]", DateTime.Now ); //Completa Assert.AreEqual( dbl1, dbl1, delta, "Erro encontrado [0]", DateTime.Now ); 4.2 Assert.AreNotEqual Oposto de AreEqual. 4.3 Assert.AreSame Verifica se duas variaveis apontam para o mesmo objeto public void TestAreSame() IMotor motor = new Motor(); ILataria lataria = new Lataria(); //Sem mensagem formatada de Erro Assert.AreSame( motor, lataria); Assert.AreSame //Com mensagem formatada de Erro Assert.AreSame( motor, lataria, "Erro encontrado [0]", DateTime.Now ); 4.4 Assert.AreNotSame Oposto de AreSame. Confidencial DBServer, 2016 Página 20 de 34

21 4.5 Assert.Fail Sempre falha o teste sem validar nada. public void TestFail() //Sem mensagem formatada de Erro Assert.Fail(); Assert.Fail //Com mensagem formatada de Erro Assert.Fail( "Erro encontrado [0]", DateTime.Now ); 4.6 Assert.Inconclusive Indica que o Assert não pode ser verificado public void TestInconclusive() //Sem mensagem formatada de Erro Assert.Inconclusive(); Assert.Inconclusive //Com mensagem formatada de Erro Assert.Inconclusive( "Erro encontrado [0]", DateTime.Now ); 4.7 Assert.IsTrue Valida se determinada condição é verdadeira Assert.IsTrue public void TestIsTrue() string str1 = "Valor string"; string str2 = "Valor string"; //Sem mensagem formatada de Erro Assert.IsTrue( str1 == str2 ); //Com mensagem formatada de Erro Assert.IsTrue( str1 == str2, "Erro encontrado [0]", DateTime.Now ); Confidencial DBServer, 2016 Página 21 de 34

22 4.8 Assert.IsFalse Oposto de IsTrue. 4.9 Assert.IsInstanceOfType Valida se objeto é de determinado tipo public void TestIsInstanceOf() string str2 = "Valor string 2"; Assert.IsInstanceOfType //Sem mensagem formatada de Erro Assert.IsInstanceOfType(str2, typeof(string)); //Com mensagem formatada de Erro Assert.IsInstanceOfType( str2, typeof( string ), "Erro encontrado [0]", DateTime.Now ); 4.10 Assert.IsNotInstanceOfType Oposto de IsInstanceOfType Assert.IsNull Valida se valor é nulo public void TestIsNull() string str2 = null; //Sem mensagem formatada de Erro Assert.IsNull(str2); Assert.IsNull //Com mensagem formatada de Erro Assert.IsNull( str2, "Erro encontrado [0]", DateTime.Now ); 4.12 Assert.IsNotNull Oposto de IsNull Confidencial DBServer, 2016 Página 22 de 34

23 5. Tipos de CollectionAssert 5.1 CollectionAssert.AreEqual Valida se itens são os mesmos entre duas listas: CollectionAssert.AreEqual public void TestCollectionAreEqual() List<string> first = new List<string>(); first.add( "a" ); first.add( "b" ); first.add( "c" ); List<string> second = new List<string>(); second.add( "a" ); second.add( "b" ); second.add( "c" ); //second.add( "d" ); //Lista second tem um item a mais -> erro. CollectionAssert.AreEqual( first, second ); 5.2 CollectionAssert.AreNotEqual Oposto de CollectionAssert.AreEqual 5.3 CollectionAssert.AllItemsAreUnique Valida se não existe nenhum valor duplicado em uma lista. Se algum item repetir, o teste falha: CollectionAssert.AllItensAreUnique public void TestCollectionAreUnique() List<string> first = new List<string>(); first.add( "a" ); first.add( "b" ); first.add( "c" ); //first.add( "c" ); //Lista possui dos itens C -> erro. CollectionAssert.AllItemsAreUnique( first ); 5.4 CollectionAssert.Contains Valida se lista contém determinado item CollectionAssert.Contains Confidencial DBServer, 2016 Página 23 de 34

24 public void TestCollectionAssertContains() List<string> first = new List<string>(); first.add( "a" ); first.add( "b" ); first.add( "c" ); CollectionAssert.Contains( first, "b" ); //CollectionAssert.Contains( first, "x" ); //Lista não contém x -> erro. 5.5 CollectionAssert.DoesNotContain Oposto de CollectionAssert.Contains 5.6 CollectionAssert.ReferenceEquals Valida se itens estão referenciando a mesma classe: CollectionAssert.ReferenceEquals public void TestCollectionReferencingSameClass() List<string> lst1 = new List<string>(); List<string> lst2 = new List<string>(); CollectionAssert.ReferenceEquals( lst1, lst2 ); 5.7 CollectionAssert.AllItemsAreNotNull Valida se todos os itens não são nulos: CollectionAssert.AllItemsAreNotNull public void TestCollectonAllItensAreNotNull() List<string> lst1 = new List<string>(); //lst1.add( null ); //Valor nulo -> erro. lst1.add( "a" ); lst1.add( "b" ); CollectionAssert.AllItemsAreNotNull( lst1 ); 5.8 CollectionAssert.AllItemsAreInstancesOfType Valida se todos itens da lista são de determinado tipo: Confidencial DBServer, 2016 Página 24 de 34

25 CollectionAssert.AllItemsAreInstanceOfType public void TestCollectionAllItemsAreInstancesOfType() List<object> lst1 = new List<object>(); lst1.add( "a" ); lst1.add( "b" ); //lst1.add( 1 ); //Item não é string -> erro. CollectionAssert.AllItemsAreInstancesOfType( lst1, typeof( string ) ); 5.9 CollectionAssert.IsSubsetOf Valida se um conjunto de itens pertence a outra lista CollectionAssert.IsSubsetOf public void TestCollectionIsSubset() List<string> lst1 = new List<string>(); lst1.add( "a" ); lst1.add( "b" ); lst1.add( "c" ); lst1.add( "d" ); List<string> lst2 = new List<string>(); lst2.add( "a" ); lst2.add( "b" ); //lst2.add( "e" ); //Item 'e' não pertence a lst1 -> erro. CollectionAssert.IsSubsetOf( lst2, lst1 ); 5.10 CollectionAssert.IsNotSubsetOf Oposto de CollectionAssert.IsSubsetOf Confidencial DBServer, 2016 Página 25 de 34

26 6. ExpectedException É possível indicarmos para nosso teste que queremos receber uma excessão como resultado do teste e faze-lo passar quando receber esta excessão. Retornando ao nosso exemplo anterior, criei a classe Calculadora e dentro dela o método Dividir, que divide dois valores e retorna um resultado. Porém, inclui neste método uma validação para retornar uma excessão do tipo DividedByZeroException quando o divisor for igual a zero. Nossa classe calculadora: Calculadora public class Calculadora : ICalculadora public double Dividir(double dividendo, double divisor) if ( divisor == 0 ) throw new DivideByZeroException(); return dividendo / divisor; Nosso teste: DeveRetornarException /// <summary> /// Valida se retornou exception /// </summary> [ExpectedException(typeof(DivideByZeroException))] public void DeveRetornarException() ICalculadora calculadora = new Calculadora(); double result = calculadora.dividir( 10, 0 ); Assert.AreEqual( 0, result ); Perceba que abaixo do atributo foi incluído o atributo [ExpectedException(typeof(DivideByZeroException))], que indica que nosso método tem que receber essa excessão como retorno do teste. Com isso, o teste passará ao receber esta excessão. Confidencial DBServer, 2016 Página 26 de 34

27 7. Nunit Framework A idéia desta sessão é demostrar que também é possível utilizar um framework de testes diferente da solução nativa oferecida pelo Visual Studio, apresentando a instalação e realização dos mesmos testes feitos anteriormente utilizando o Nunit framework. 7.1 Vantagens do Nunit Framework A solução de testes do Visual Studio e o Nunit são muito semelhantes, mas podemos citar algumas vantagens do Nunit: Nunit tem uma interface gráfica própria onde basta associar a dll que deseja testar e realizar o teste, permitindo que mais usuários possam realizar o teste sem a necessidade de possuir o Visual Studio instalado. Nunit tem atualizações mais constantes que o VisualStudio. Nunit tem uma apresentação mais detalhada das excessões encontradas nos testes. Nunit tem opções de Asserts. 7.2 Instalação e configuração Crie um novo projeto do tipo ClassLibrary. Eu nomeei meu projeto como TDD.NunitTest. Adicione referencia ao projeto TDD.Model. Acesse a url e faça o download e a instalação do Nunit. Neste tutorial estou utilizando a versão Confidencial DBServer, 2016 Página 27 de 34

28 Obs: Tive problemas instalando a versão 3.0.1, tive que desinstalar e instalar a para conseguir rodar. Caso o mesmo ocorra com você, é necessário instalar o Nunit via Package Manager Console ao invés do Nuget Package, pois precisamos da versão que é anterior. Caso o erro não ocorra, o Nunit pode ser baixado normalmente pelo Manage Nuget Packages. Instalação via Nuget: No projeto de teste (no meu caso TDD.NunitTest), clique com o botão direito e então Manage Nuget Packages: Selecione Browse, pesquise por Nunit e então clique no botão Install, no canto superior direito: Instalação pelo Package Console: Confidencial DBServer, 2016 Página 28 de 34

29 Na janela que abrir, digite o comando abaixo para instalar a versão do Nunit: Confidencial DBServer, 2016 Página 29 de 34

30 Após finalizar a instação, podemos ver a referência adicionada ao nosso projeto: 7.3 Executando testes no Nunit Nunit instalado, podemos codificar nosso teste. Crie uma classe no projeto TDD.NunitTest e adicione o código abaixo. Estes são os mesmos métodos utilizados anteriormente, porém adaptados para serem usados pelo Nunit, utilizando os atributos [TestFixture] ao invés de [TestClass] e [Test] ao invés de. Note também que possuimos dois métodos a mais aqui, decorados com os atributos [TestFixtureSetUp] e [TestFixtureTearDown]. O método decorado com [TestFixtureSetUp] sempre roda antes dos demais testes toda vez que qualquer teste da mesma classe é executado. Ele e é utilizado para inicializar configurações necessárias para o processo como um todo, como inicializar strings de conexões, por exemplo. O método decorado com [TestFixtureTearDown] sempre roda após os demais testes e é utilizado para finalizar objetos, fechar conexões, etc. Rode o teste da mesma forma anterior. CarroTest com Nunit Confidencial DBServer, 2016 Página 30 de 34

31 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NUnit.Framework; using TDD.Domain; namespace TDD.NunitTest [TestFixture] public class CarroTest private IMotor motor = null; private ILataria lataria = null; /// <summary> /// Este método sempre será executado ANTES dos testes /// </summary> [TestFixtureSetUp] public void StartTest() motor = new Motor(); lataria = new Lataria(); /// <summary> /// Este método sempre será executado APOS a execução dos testes /// </summary> [TestFixtureTearDown] public void EndTest() motor = null; lataria = null; /// <summary> /// Valida se atributo Motor da classe Carro não é nulo /// </summary> [Test] public void DevePossuirMotor() //IMotor motor = new Motor(); //ILataria lataria = new Lataria(); ICarro carro = new Carro( motor, lataria ); Assert.IsNotNull( carro.motor, "Motor é nulo 0 1!", "[X]", "[Y]" ); /// <summary> /// Valida se carro possui 4 rodas /// </summary> [Test] public void DevePossuirQuatroRodas() Confidencial DBServer, 2016 Página 31 de 34

32 //IMotor motor = new MotorY(); //ILataria lataria = new Lataria(); ICarro carro = new Carro( motor, lataria ); List<IRoda> rodas = carro.rodas; Assert.AreEqual( 4, rodas.count ); /// <summary> /// Valida se carro possui 2 portas /// </summary> [Test] public void DevePossuirDuasPortas() //IMotor motor = new Motor(); //ILataria lataria = new Lataria(); ICarro carro = new Carro( motor, lataria ); List<IPorta> portas = carro.portas; Assert.AreEqual( 2, portas.count ); Outra forma de utilizar o Nunit é usando o Nunit Application, que foi instalado anteriormente. Ele pode ser encontrado em All Programs: Ao abrir o programa, vá em File / Open Project e selecione a dll do nosso projeto TDD.NunitTest. O Nunit ira carregar todos nossos métodos de teste: Confidencial DBServer, 2016 Página 32 de 34

33 Clique em Run e ele executará todos os testes. Confidencial DBServer, 2016 Página 33 de 34

34 8. Fontes Histórico da Revisão Data Descrição Responsável 23/02/2016 Criação do arquivo Wagner De Rossi Confidencial DBServer, 2016 Página 34 de 34

Teste Unitários com NUnit. Anderson Martiniano da Rocha

Teste Unitários com NUnit. Anderson Martiniano da Rocha Teste Unitários com NUnit Anderson Martiniano da Rocha [email protected] Sumário Conceito de teste unitário Vantagens da utilização de testes unitários NUnit (Características, Atributos, Ferramentas)

Leia mais

Introdução ao Desenvolvimento de Aplicativos Android

Introdução ao Desenvolvimento de Aplicativos Android Introdução ao Desenvolvimento de Aplicativos Android Preparando o ambiente de desenvolvimento Entre as ferramentas que você precisa instalar estão: JDK - como o Android faz uso da tecnologia Java, é necessário

Leia mais

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias 1 IDES E PROGRAMAÇÃO Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias {claudio,macdias}@icmc.usp.br 2 Agenda Conceitos Instalação e Configuração Compilação e Execução de Código IDEs Exemplo

Leia mais

Modelo de Instalação e configuração do token 5100 e 5110.

Modelo de Instalação e configuração do token 5100 e 5110. Modelo de Instalação e configuração do token 5100 e 5110. Versão 4.3 As informações contidas neste documento sobre produtos e serviços são de propriedade da Ecoscard sendo sua duplicação permitida apenas

Leia mais

Consulta de endereço através do Cep

Consulta de endereço através do Cep --------------------------------------------------------------------------------------------- Por: Giancarlo Fim [email protected] Acesse: http://giancarlofim.wordpress.com/ ---------------------------------------------------------------------------------------------

Leia mais

Versão 4.0. Ecoscard Serviços de Suporte em Cartões Inteligentes Ltda Confidencial 1

Versão 4.0. Ecoscard Serviços de Suporte em Cartões Inteligentes Ltda Confidencial 1 Modelo de Instalação e configuração do token 5100 e 5110. Este manual é uma forma resumida e um pouco menos detalhada das informações fornecidas pelo fabricante dos token(gemalto), a Ecoscard não se responsabiliza

Leia mais

Análise e Projeto Orientados a Objetos

Análise e Projeto Orientados a Objetos Análise e Projeto Orientados a Objetos Testes de unidade Diretoria Acadêmica de Gestão e Tecnologia da Informação Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Introdução Por que testar?

Leia mais

05 Como utilizar POO no ambiente gráfico do C#?

05 Como utilizar POO no ambiente gráfico do C#? 05 Como utilizar POO no ambiente gráfico do C#? Abra um novo projeto, mas desta vez, não escolha uma aplicação Console. Escolha Windows Form Application. A diferença para a aplicação de Console é a presença

Leia mais

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI WEB USER CONTROLS Neste exercício trabalharemos com a criação de controles ASP.NET personalizados. Através do uso de Web

Leia mais

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias

Leia mais

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP AULA 2 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

Leia mais

Aplicação MVC com Class Library

Aplicação MVC com Class Library Aplicação MVC com Class Library Vamos considerar uma Class Library com o modelo de dados e com acesso à base de dados através do Entity Framework. Uma Class Library nunca funciona sozinha. Vamos usá-la

Leia mais

Criando um Editor de Diagramas com Sirius

Criando um Editor de Diagramas com Sirius Criando um Editor de Diagramas com Sirius Sirius é um plugin do Eclipse dedicado a criação de ambientes gráficos de trabalho personalizados para modelagem. Em outras palavras, Sirius foi criado para prover

Leia mais

Automação em Telas. Desenvolvimento IBM Maximo nível 1. Leonardo Almeida Bastos Versão 1.0

Automação em Telas. Desenvolvimento IBM Maximo nível 1. Leonardo Almeida Bastos Versão 1.0 Automação em Telas Desenvolvimento IBM Maximo nível 1 Leonardo Almeida Bastos [email protected] Versão 1.0 Sumário Objetivo... 3 Regras de Negócio... 3 Atribuições do desenvolvedor... 3 Desenvolvimento...

Leia mais

Testes Unitários com JUnit

Testes Unitários com JUnit Testes Unitários com JUnit Por: Luiz Gustavo Stábile de Souza http://luizgustavoss.wordpress.com Abril/2009 Motivação Apesar de já fazer um certo tempo que escrevi a primeira versão deste tutorial, o assunto

Leia mais

INSTALAÇÃO DO CLIENTE LOTUS NOTES ROTEIRO DE INSTALAÇÃO E CONFIGURAÇÃO

INSTALAÇÃO DO CLIENTE LOTUS NOTES ROTEIRO DE INSTALAÇÃO E CONFIGURAÇÃO INSTALAÇÃO DO CLIENTE LOTUS NOTES 9.0.1 ROTEIRO DE INSTALAÇÃO E CONFIGURAÇÃO Agosto de 2018 2 Sumário Obtendo o Software Cliente Notes... 3 Requisitos para instalação... 4 Instalando o Cliente Notes versão

Leia mais

Procedimentos para Atualização Sisloc

Procedimentos para Atualização Sisloc Procedimentos para Atualização Sisloc Sumário: 1. Informações Gerais... 3 2. Atualização de versão no servidor... 3 Passo a passo... 3 3. Atualização de Versão nas Demais Máquinas... 9 Passo a passo...

Leia mais

(INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA)

(INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA) (INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA) Ferramenta 1 -NetBeans 8.1 GUI Elaborado por: Osmar de Oliveira Braz Junior Descrição

Leia mais

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){ UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------

Leia mais

Configurador do JBOSS. TOTVS Datasul 11. Alerta

Configurador do JBOSS. TOTVS Datasul 11. Alerta Configurador do JBOSS TOTVS Datasul 11 Alerta Faça backup do diretório do JBOSS antes de iniciar a execução do console, caso precise voltar à situação anterior a execução. Mais informações são fornecidas

Leia mais

MANUAL DO INSTALADOR DE CURSOS VERSÃO

MANUAL DO INSTALADOR DE CURSOS VERSÃO ÍNDICE 1. Instalador de cursos... 2 1.1. Instalação do Instalador de cursos... 2 1.2. Conhecendo o Instalador de cursos... 5 1.2.1. Instalar Cursos... 5 1.2.2. Cursos Instalados... 8 1.2.3. Atualizações

Leia mais

COMPORTAMENTOS - Observações

COMPORTAMENTOS - Observações COMPORTAMENTOS - Observações O próprio objeto realiza operações de consulta ou alteração dos valores dos seus atributos Essas operações são definidas em seus métodos Os métodos também são utilizados para

Leia mais

POO Documentation. Release 1.0. Felipe Dau e Francisco Pereira Junior

POO Documentation. Release 1.0. Felipe Dau e Francisco Pereira Junior POO Documentation Release 1.0 Felipe Dau e Francisco Pereira Junior August 13, 2015 Contents 1 Instalação do Java 1 1.1 Download................................................. 1 1.2 Instalação.................................................

Leia mais

Instalação JDK 10/03/2017

Instalação JDK 10/03/2017 1 Instalação JDK 10/03/2017 Máquina Virtual Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação, responsável por traduzir o que sua aplicação

Leia mais

Fábrica de Noobs Reloaded Sistemas Operacionais Instalando e Utilizando o VirtualBox

Fábrica de Noobs Reloaded Sistemas Operacionais Instalando e Utilizando o VirtualBox Fábrica de Noobs Reloaded Sistemas Operacionais Instalando e Utilizando o VirtualBox No vídeo anterior, apresentei as vantagens de se utilizar uma máquina virtual, e mostrei como utilizar o VMware, virtualizador

Leia mais

DISTRIBUINDO SUA APLICAÇÃO

DISTRIBUINDO SUA APLICAÇÃO DISTRIBUINDO SUA APLICAÇÃO Depois de pronta sua aplicação precisa ser distribuida para todos que querem ou precisam usá-la. Para usar a sua aplicação, o único requisito para o computador do cliente é que

Leia mais

Desenvolvendo aplicações Java

Desenvolvendo aplicações Java José Roberto Madureira Junior Adaní Cusin Sacilotti Adriana Rodrigues Reginaldo Sacilotti Desenvolvendo aplicações Java Primeira Edição São Paulo 2017 Sumário 1 INTRODUÇÃO AO JAVA... 1 1.1 A PLATAFORMA

Leia mais

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo Usando o Eclipse - Fundamentos Professor Vicente Paulo de Camargo O Eclipse é um ambiente de desenvolvimento integrado (IDE) É a ferramenta mais utilizada pelas empresas, visto que pode ser configurada

Leia mais

Índice. 1. Introdução Instalação: Eclipse e Android Primeira aplicação em Android... 11

Índice. 1. Introdução Instalação: Eclipse e Android Primeira aplicação em Android... 11 Índice 1. Introdução... 03 2. Instalação: Eclipse e Android... 04 3. Primeira aplicação em Android... 11 1. Introdução Android trata-se de um sistema operacional baseado em Linux. No dia 05 de novembro

Leia mais

MANUAL DO INSTALADOR DE CURSOS VERSÃO (64 bits) - BETA

MANUAL DO INSTALADOR DE CURSOS VERSÃO (64 bits) - BETA ÍNDICE 1. Instalador de cursos... 2 1.1. Versão 64 bits... 2 1.2. Instalação do Instalador de cursos... 2 2. Conhecendo o Instalador de Cursos... 5 2.1. Instalar Cursos... 6 Finalizando a instalação: Tela

Leia mais

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira Tratamento de Erros Sérgio Luiz Ruivace Cerqueira [email protected] Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:

Leia mais

Guia de instalação Impressora Térmica EPSON TM-88IV (Linux)

Guia de instalação Impressora Térmica EPSON TM-88IV (Linux) 1. Passo Conecte a impressora à fonte de alimentação elétrica e em seguida acione o botão de ligar a impressora. Conecte um cabo de rede entre a impressora e a placa de rede de um computador qualquer.

Leia mais

Sobre o Visual C++ 2010

Sobre o Visual C++ 2010 O Visual Studio é um pacote de programas da Microsoft para desenvolvimento de software, suportando diversas linguagens como C#, C++, C, Java, Visual Basic, etc. Nesta série de tutoriais vou focar apenas

Leia mais

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG Instalação JDK Joyce França Professora de Ciência da Computação - IFNMG Máquina Virtual Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação,

Leia mais

Guia de Instalação e Inicialização. Para DataPage+ 2012

Guia de Instalação e Inicialização. Para DataPage+ 2012 Para DataPage+ 2012 Última revisão: 29 de agosto de 2012 Índice Instalando componentes de pré-requisito... 1 Visão geral... 1 Passo 1: Execute o setup.exe e inicie o assistente... 1 Passo 2: Aceite os

Leia mais

O JUnit permite a realização de testes de unidades, conhecidos como "caixa branca", facilitando assim a correção de métodos e objetos.

O JUnit permite a realização de testes de unidades, conhecidos como caixa branca, facilitando assim a correção de métodos e objetos. JUnit O JUnit é um framework open-source, criado por Erich Gamma e Kent Beck, com suporte à criação de testes automatizados na linguagem de programação Java. Esse framework facilita a criação de código

Leia mais

PROCEDIMENTOS PARA DOWNLOAD, INSTALAÇÃO E CONFIGURAÇÃO DA IMPRESSORA FREEPDF XP. A impressora FreePDF XP é um sistema com licença de uso GLP (Software Livre) e que está disponível para Download no site

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos

Leia mais

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues JUnit Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues Roteiro Teste Unitário: O que? Por quê? Quando? Quem? O que testar? Teste Funcional: O que é? JUnit:

Leia mais

Tutorial de Instalação Linux Ubuntu LTS

Tutorial de Instalação Linux Ubuntu LTS Tutorial de Instalação Linux Ubuntu 16.04.2 LTS (Cléber Ribas dos Santos) Introdução: Este tutorial tem por objetivo auxiliar, passo a passo, na instalação do sistema operacional Linux Ubuntu 16.04.2 LTS

Leia mais

Instalando o Eclipse e o Android

Instalando o Eclipse e o Android Instalando o Eclipse e o Android Para a elaboração desse material, eu fiz o uso do Eclipse Galileo (Eclipse 3.5.1 para Windows) e o SDK do Android Revisão 5 e o plugin do Android para o Eclipse ADT-0.9.6.

Leia mais

Instalação do TextPad

Instalação do TextPad ESCOLA POLITÉCNICA DA UNIVERSIDADE DE SÃO PAULO Departamento de Engenharia Mecatrônica e de Sistemas Mecânicos PMR 2300 Computação para Automação 1 o Semestre 2005 Instalação do TextPad 1.Obtendo o arquivo

Leia mais

Microsoft Word 2010 NORMA ABNT para Trabalhos Acadêmicos Conceitos Básicos

Microsoft Word 2010 NORMA ABNT para Trabalhos Acadêmicos Conceitos Básicos Microsoft Word 2010 NORMA ABNT para Trabalhos Acadêmicos Conceitos Básicos [email protected] SUMÁRIO Iniciando o Word... 1 Conhecendo a Ferramenta... 1 Menu Layout da Página... 2 Capa... 3 Folha

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Acessando Objetos Msc. Paulo de Tarso F. Júnior 1 Classe Classe: Radio - ligada : boolean - potencia : double + ligar() : void + desligar() : void + estaligada() : boolean

Leia mais

Manual de instalação do Maple para Linux

Manual de instalação do Maple para Linux Manual de instalação do Maple para Linux Antes de começar tenha em mente que este software só poderá ser ativado em um único computador, uma vez ativado não será possível a reativação em outro computador.

Leia mais

Manual de Instrução: LG MG320c - Versão Windows LG MG320C

Manual de Instrução: LG MG320c - Versão Windows LG MG320C Manual de Instrução: LG MG320c - Versão Windows MANUAL DE INSTRUÇÃO INSTALAÇÃO DA LISTA TELEFÔNICA - AGECEL LG MG320C VIA CABO DE DADOS Manual de Instrução: LG MG320c - Versão Windows 2/8 Introdução A

Leia mais

WINDOWS FORMS APPLICATION - Aplicação (Programa) que não usa a CONSOLE

WINDOWS FORMS APPLICATION - Aplicação (Programa) que não usa a CONSOLE WINDOWS FORMS APPLICATION - Aplicação (Programa) que não usa a CONSOLE 1. Introdução. Uma Aplicação Windows Forms consiste em programas GRÁFICOS fundamentados no conceito de JANELAS que, no Visual Studio,

Leia mais

Introdução ao C# com o Microsoft Visual Studio Community 2015

Introdução ao C# com o Microsoft Visual Studio Community 2015 José Roberto Madureira Junior Adaní Cusin Sacilotti Adriana Rodrigues Reginaldo Sacilotti Introdução ao C# com o Microsoft Visual Studio Community 2015 Primeira Edição São Paulo 2016 Sumário 1 INTRODUÇÃO

Leia mais

PRDS C#.Net Alexandre L. Silva

PRDS C#.Net Alexandre L. Silva PRDS 2011.1 C#.Net Alexandre L. Silva [email protected] Programa 1. Introdução ao.net 2. Introdução ao ASP.Net 3. Introdução ao C#.Net 4. Primeiro programa 5. Métodos e Variáveis 6. Estruturas

Leia mais

Tutorial de Instalação Linux Mint 19 Tara

Tutorial de Instalação Linux Mint 19 Tara Tutorial de Instalação Linux Mint 19 Tara (Cléber Ribas dos Santos e Nataly Pozzer Aloy Krentkowski) Introdução: Este tutorial tem por objetivo auxiliar, passo a passo, na instalação do sistema operacional

Leia mais

MANUAL DO INSTALADOR DE CURSOS PORTÁTIL v.1.0

MANUAL DO INSTALADOR DE CURSOS PORTÁTIL v.1.0 ÍNDICE 1. Instalador de Cursos Portátil... 2 2. Executando o Instalador de Cursos Portátil... 2 3. Realizando o login... 4 4. Tela Principal... 6 4.1. Menu Atualizações... 6 4.1.1. Internas... 7 4.1.2.

Leia mais

Selecione o WPF Application dentro de Templates > Visual C# > Windows

Selecione o WPF Application dentro de Templates > Visual C# > Windows Atividade adicional 2 Criação de formulários e controles gráficos Abra o Visual Studio e acesse o menu File > New > Project Selecione o WPF Application dentro de Templates > Visual C# > Windows Quando

Leia mais

Como instalar Open Broadcaster Software (OBS) para transmitir em HD

Como instalar Open Broadcaster Software (OBS) para transmitir em HD Como instalar Open Broadcaster Software (OBS) para transmitir em HD Passo 1 Vá em https://obsproject.com/download e clique no ícone do seu sistema operacional. Passo 2 Windows: clique no botão Download

Leia mais

Gerando um programa executável a partir de um módulo Python

Gerando um programa executável a partir de um módulo Python Gerando um programa executável a partir de um módulo Python Wendel Melo (Departamento de Ciência da Computação UFRJ), Notas de aula de Computação II 15/03/2012 A linguagem de programação Python segue o

Leia mais

Manual de Instalação Software de Cartão Inteligente SafeSign

Manual de Instalação Software de Cartão Inteligente SafeSign Comunicação Interna Este documento foi classificado pela área de Certificação Digital e o acesso está autorizado aos clientes, visando auxiliá-los na instalação de seu produto. Versões Compatíveis MAC

Leia mais

Modificadores de Acesso e Atributos de Classe

Modificadores de Acesso e Atributos de Classe Modificadores de Acesso e Atributos de Classe 1 Controlando o acesso p Um dos problemas mais simples que temos no nosso sistema de contas é que o método saca permite sacar mesmo que o limite tenha sido

Leia mais

SISCEL. Sistema de Controle de Exames Laboratoriais

SISCEL. Sistema de Controle de Exames Laboratoriais SISCEL Sistema de Controle de Exames Laboratoriais ---------------------------------------------------------------------------------------------- Manual de instalação do SISCEL Versão: 2015 Sumário Observações

Leia mais

Introdução à Ciência da Computação com Jogos Bruno Feijó - Esteban Clua - Fávio S. Corrêa da Silva

Introdução à Ciência da Computação com Jogos Bruno Feijó - Esteban Clua - Fávio S. Corrêa da Silva Usando Java na Plataforma NetBeans Antes de usar a plataforma NetBeans pela primeira vez, crie uma pasta onde você guardará as suas aplicações Java (por exemplo: C:\meusJavas). 1. Abra e especifique um

Leia mais

Figura 1: Eclipse criação de um Dynamic Web Project

Figura 1: Eclipse criação de um Dynamic Web Project Prática da Disciplina de Sistemas Distribuídos Web Services Parte 2 IFMA DAI Professor Mauro Lopes C. Silva 1. Criação de um Serviço Rest Utilizando a configuração realizada na prática anterior, iremos

Leia mais

Sistema SGPA-IFSP. Manual de Instalação

Sistema SGPA-IFSP. Manual de Instalação Sistema SGPA-IFSP Manual de Instalação Sumário 1. Introdução... 3 2. Softwares Necessários... 4 2.1 Ambiente Java... 4 2.2 Servidor MySQL... 8 2.3 Spring Tool Suit... 17 3. Configuração e Implantação do

Leia mais

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015 PCS - 3111 Laboratório de Programação Orientada a Objetos 1a. Prova 02 de Setembro de 2015 Questão 1 (2,6) Deseja-se implementar um programa que recebe um mês e um dia atual de um ano e o mês e o dia de

Leia mais

Criação de uma aplicação Web ASP.NET MVC 4

Criação de uma aplicação Web ASP.NET MVC 4 Criação de uma aplicação Web ASP.NET MVC 4 usando Code First, com Roles (VS2012) Baseado no artigo de Scott Allen Roles in ASP.NET MVC4 : http://odetocode.com/blogs/scott/archive/2012/08/31/seeding membership

Leia mais

Usando VNC para instalar o CallManager da Cisco em um servidor remoto

Usando VNC para instalar o CallManager da Cisco em um servidor remoto Usando VNC 3.3.7 para instalar o CallManager da Cisco em um servidor remoto Índice Introdução Pré-requisitos Requisitos Componentes Utilizados Convenções Use o VNC com CallManager da Cisco Preparação do

Leia mais

Guia para o iniciante no Orthanc Para físicos-médicos, médicos e clínicos gerais.

Guia para o iniciante no Orthanc Para físicos-médicos, médicos e clínicos gerais. Guia para o iniciante no Orthanc Para físicos-médicos, médicos e clínicos gerais. Etapa 1: baixando e instalando Este tutorial se concentra nos binários do Windows. Downloading A última versão do Orthanc

Leia mais

Instalação Client Oracle 10g 32 e 64 bits

Instalação Client Oracle 10g 32 e 64 bits Instalação Client Oracle 10g 32 e 64 bits Este documento tem como objetivo orientar os técnicos de Infraestrutura na instalação do Client Oracle 10g 32 e 64 bits. Como fazer a instalação do Client Oracle

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos [email protected] Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;

Leia mais

Conhecendo o Delphi 2010

Conhecendo o Delphi 2010 2ª Aula 11 de fevereiro de 2011 Conhecendo o Delphi 2010 Inicie o Delphi clicando no ícone Delphi 2010 que se encontra no menu Iniciar / Todos os Programas / Embarcadero RAD Studio 2010 / Delphi 2010.

Leia mais

TUTORIAL DE USO DO GIT JUNTO AO ECLIPSE

TUTORIAL DE USO DO GIT JUNTO AO ECLIPSE TUTORIAL DE USO DO GIT JUNTO AO ECLIPSE 1. O que é o Git? Git é um sistema de controle de versão distribuído, inicialmente projetado para o desenvolvimento do Kernel do Linux, por Linus Torvalds. Neste

Leia mais

Instalação do Oracle VM Virtual Box

Instalação do Oracle VM Virtual Box 1 de 14 09/08/2012 12:56 Instalação do Oracle VM Virtual Box Após fazer download do Oracle VM VirtualBox o próximo passo é a instalação. Seguindo este tutorial passo-a-passo não haverá qualquer dificuldade

Leia mais

1 Introdução e Conceitos básicos

1 Introdução e Conceitos básicos 1 Introdução e Conceitos básicos Aula 02 Sumário Capítulo 1 Introdução e Conceitos básicos 1.1 Modelos 1.2 Tipos primitivos de dados 1.3 Tipo Abstrato de dados 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2

Leia mais

Linguagem de Programação II Programação Orientada a Objetos. Ambientes de Programação

Linguagem de Programação II Programação Orientada a Objetos. Ambientes de Programação Linguagem de Programação II Programação Orientada a Objetos Ambientes de Programação Prof. Alessandro Borges 2 Tópicos Prompt de comando JDK IDE NetBeans Eclipse Jbuilder Visual Café Visual J++ NetBeans

Leia mais

MÓDULO FISCAL ELETRÔNICO MFE MANUAL DE INSTALAÇÃO

MÓDULO FISCAL ELETRÔNICO MFE MANUAL DE INSTALAÇÃO MÓDULO FISCAL ELETRÔNICO MFE MANUAL DE INSTALAÇÃO Rev. 01.00 Sumário 1 Introdução... 1 2 Instalando o Driver USB... 2 3 Instalando o Driver MFE (Monitor)... 8 4 Instalando o Integrador... 15 5 Instalando

Leia mais

TUTORIAL DE INSTALAÇÃO DO AMBIENTE DE DESENVOLVIMENTO ANDROID NO UBUNTU

TUTORIAL DE INSTALAÇÃO DO AMBIENTE DE DESENVOLVIMENTO ANDROID NO UBUNTU TUTORIAL DE INSTALAÇÃO DO AMBIENTE DE DESENVOLVIMENTO ANDROID NO UBUNTU Wellyson Vieira Dias 1. Introdução: 1.1. Componentes do ambiente de desenvolvimento: - IDE Android Studio com SDK. - API Level 19

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Ciência da Computação Prof. Elias Ferreira Elaborador por: Ana Claudia Bastos Loureiro Monção JUNIT Teste de Software Processo de Software Um processo de software pode ser visto como o conjunto de atividades,

Leia mais

Introdução à Engenharia ENG1000

Introdução à Engenharia ENG1000 Introdução à Engenharia ENG1000 Aula 04 Introdução ao Visual Studio 2010 Prof. Augusto Baffa 1. Execute o MS-Visual Studio 2010. Experimente o caminho: Start All Programs Microsoft

Leia mais

Ferramenta Selenium. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

Ferramenta Selenium. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP Ferramenta Selenium 1/38 O que é A ferramenta Selenium permite que se realizam testes automatizados de aplicativos Web Em particular, teste de regressão IDE Selenium Selenium WebDriver http://www.seleniumhq.org/

Leia mais

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA TUTORIAL OPEN WATCOM: CRIANDO O PRIMEIRO PROGRAMA

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA TUTORIAL OPEN WATCOM: CRIANDO O PRIMEIRO PROGRAMA LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA TUTORIAL OPEN WATCOM: CRIANDO O PRIMEIRO PROGRAMA Prof. Dr. Daniel Caetano 2012-1 Visão Geral 1 Instalando o Open Watcom 2 Criando um Projeto 3 Continuando um Projeto

Leia mais

Pacote de instalação dos componentes Selo Digital /SP

Pacote de instalação dos componentes Selo Digital /SP Pacote de instalação dos componentes Selo Digital /SP Objetivo do Documento Nesse documento está especificado o procedimento que deve ser adotado para realizar a instalação e configuração dos Componentes

Leia mais

Usando o VMware Identity Manager Desktop. VMware Identity Manager 2.8 VMware Identity Manager 2.9.1

Usando o VMware Identity Manager Desktop. VMware Identity Manager 2.8 VMware Identity Manager 2.9.1 Usando o VMware Identity Manager Desktop VMware Identity Manager 2.8 VMware Identity Manager 2.9.1 Usando o VMware Identity Manager Desktop Você pode encontrar a documentação técnica mais atualizada no

Leia mais

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos 1. Para a construção de uma aplicação gráfica se faz necessário conceber a interface de aplicação, identificando-se

Leia mais

Manual Técnico. Instalação e Configuração do Reporting Services

Manual Técnico. Instalação e Configuração do Reporting Services 201 6 Manual Técnico Instalação e Configuração do Reporting Services Me ta T e c no l o g i a em So f t wa r e Lt da. Com a instalação do módulo de Reporting services poderemos disponibilizar relatórios,

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador) Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado

Leia mais

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Passo-a-passo para desenvolver um Programa usando a Linguagem Python Cursos: Engenharia de Produção / Tecnólogo em Gestão da Qualidade Disciplina: Informática Professora: Flávia Pereira de Carvalho Passo-a-passo para desenvolver um Programa usando a Linguagem Python 1)

Leia mais