TDD<br />Alaor Bianco<br />alaorbianco@yahoo.com.br<br />
Custo de Modificações (Clássico)<br />
Cone da Incerteza<br />Incerteza<br />Custo<br />Esforço<br />
Custo de Modificações(Eng. de Soft. Moderna)<br />
Como?!<br />Design Evolutivo<br />Simplicidade<br />Feedback constante (e rápido)<br />Testes Automatizados<br />Refatoraç...
Exemplo<br />Um programa para decompor em fatores primos<br />Exemplo: 30 = 2.3.5<br />Exemplo: 20 = 2.2.5<br />
Testes<br />[TestMethod]<br />publicvoidGetPrimos_Deve_Retornar_Sequencia_Primos()<br />{<br />IGeradorNumerosPrimos gerad...
Testes<br />[TestMethod]<br />publicvoid DecompoeFatorePrimos_Decompor_30_Deve_Retornar_2_3_5()<br />{<br />    var gerado...
Classes<br />publicclassGeradorPrimosMuitoSimples : IGeradorNumerosPrimos<br />{<br />publicIEnumerable<int> GetPrimos()<b...
Classes<br />publicclass Decompositor<br />{<br />privatereadonlyIGeradorNumerosPrimos _geradorNumeroPrimos;<br />public D...
Programa<br />staticvoidMain(string[] args)<br />{<br />int numero = 30;<br />    var gerador = newGeradorPrimosMuitoSimpl...
Ferramentas do Exemplo<br />MSTest<br />SharpTestsEx<br />
Exemplos SharpTestEx<br />true.Should().Be.True();<br />false.Should().Be.False();<br />const string something = "somethin...
Upcoming SlideShare
Loading in …5
×

TDD

881 views
829 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
881
On SlideShare
0
From Embeds
0
Number of Embeds
330
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TDD

  1. 1. TDD<br />Alaor Bianco<br />alaorbianco@yahoo.com.br<br />
  2. 2. Custo de Modificações (Clássico)<br />
  3. 3. Cone da Incerteza<br />Incerteza<br />Custo<br />Esforço<br />
  4. 4. Custo de Modificações(Eng. de Soft. Moderna)<br />
  5. 5. Como?!<br />Design Evolutivo<br />Simplicidade<br />Feedback constante (e rápido)<br />Testes Automatizados<br />Refatoração<br />
  6. 6. Exemplo<br />Um programa para decompor em fatores primos<br />Exemplo: 30 = 2.3.5<br />Exemplo: 20 = 2.2.5<br />
  7. 7. Testes<br />[TestMethod]<br />publicvoidGetPrimos_Deve_Retornar_Sequencia_Primos()<br />{<br />IGeradorNumerosPrimos gerador = newGeradorPrimosMuitoSimples();<br />gerador.GetPrimos().Should().Have.<br />SameSequenceAs(<br /> new[] { 2, 3, 5, 7, 13 });<br />}<br />
  8. 8. Testes<br />[TestMethod]<br />publicvoid DecompoeFatorePrimos_Decompor_30_Deve_Retornar_2_3_5()<br />{<br /> var gerador = new<br />GeradorPrimosMuitoSimples();<br /> var decompositor = new<br /> Decompositor(gerador);<br />decompositor.DecompoeFatorePrimos(30).Should() .Have.SameSequenceAs(new[] { 2, 3, 5 });<br />}<br />
  9. 9. Classes<br />publicclassGeradorPrimosMuitoSimples : IGeradorNumerosPrimos<br />{<br />publicIEnumerable<int> GetPrimos()<br /> {<br /> var list = newList<int> <br /> { 2, 3, 5, 7, 13 };<br />returnlist;<br /> }<br />}<br />
  10. 10. Classes<br />publicclass Decompositor<br />{<br />privatereadonlyIGeradorNumerosPrimos _geradorNumeroPrimos;<br />public Decompositor(IGeradorNumerosPrimosgeradorNumerosPrimos)<br /> {<br />this._geradorNumeroPrimos = geradorNumerosPrimos;<br /> }<br />publicList<int> DecompoeFatorePrimos(int numero)<br /> {<br /> var list = newList<int>();<br /> foreach (var primo in this._geradorNumeroPrimos.GetPrimos())<br /> {<br />if (primo == 1)<br /> {<br />break;<br /> }<br />while (numero % primo == 0)<br /> {<br />list.Add(primo);<br /> numero /= primo;<br /> }<br /> }<br />returnlist;<br /> }<br />}<br />
  11. 11. Programa<br />staticvoidMain(string[] args)<br />{<br />int numero = 30;<br /> var gerador = newGeradorPrimosMuitoSimples();<br /> var decompositor = new Decompositor(gerador);<br /> var list = decompositor.<br />DecompoeFatorePrimos(numero);<br /> Console.WriteLine(<br /> string.Format(<br /> "{0} = {1}",numero, <br /> string.Join(".", list)));<br /> Console.ReadKey();<br />}<br />Resultado => 30 = 2.3.5<br />
  12. 12. Ferramentas do Exemplo<br />MSTest<br />SharpTestsEx<br />
  13. 13. Exemplos SharpTestEx<br />true.Should().Be.True();<br />false.Should().Be.False();<br />const string something = "something";<br />something.Should().Contain("some");<br />something.Should().Not.Contain("also");<br />something.ToUpperInvariant().Should().Not.Contain("some");<br />something.Should()<br /> .StartWith("so")<br /> .And<br /> .EndWith("ing")<br /> .And<br /> .Contain("meth");<br />something.Should()<br /> .Not.StartWith("ing")<br /> .And<br /> .Not.EndWith("so")<br /> .And<br /> .Not.Contain("body");<br />var ints = new[] { 1, 2, 3 };<br />ints.Should().Have.SameSequenceAs(new[] { 1, 2, 3 });<br />ints.Should().Not.Have.SameSequenceAs(new[] { 3, 2, 1 });<br />ints.Should().Not.Be.Null();<br />ints.Should().Not.Be.Empty();<br />ints.Should()<br /> .Contain(2)<br /> .And<br /> .Not.Contain(4);<br />(newint[0]).Should().Be.Empty();<br />

×