Estou curioso nesse exercício, não achei uma solução de como consertar.
4) E, agora, vamos para o que tem apenas uma negociação e estava falhando. Ainda na classe
CandlestickFactoryTest adicione o método: (repare que cada classe de teste possui vários métodos
com vários casos diferentes)
@Test
public void apenasUmaNegociacaoGeraCandleComValoresIguais()
{
Calendar hoje = Calendar.getInstance();
Negociacao negociacao1 = new Negociacao(40.5, 100, hoje);
List<Negociacao> negociacoes = Arrays.asList(negociacao1);
CandlestickFactory fabrica = new CandlestickFactory();
Candlestick candle = fabrica.constroiCandleParaData(hoje, negociacoes);
Assert.assertEquals(40.5, candle.getAbertura(), 0.00001);
Assert.assertEquals(40.5, candle.getFechamento(), 0.00001);
Assert.assertEquals(40.5, candle.getMinimo(), 0.00001);
Assert.assertEquals(40.5, candle.getMaximo(), 0.00001);
Assert.assertEquals(4050.0, candle.getVolume(), 0.00001);
}
Rode o teste. Repare no erro:
Como consertar?
amigo eu ate sei daonde vem este exercicio ( FJ-26 se nao me engano ) mas se vc nao passar o contexto fica dificil.
por exemplo vc tem 4 assertions onde vc espera 40.5 e vc nao diz se o erro foi na primeira delas… dê mais detalhes pq quem lê nao imagina o codigo por traz disso
É um problema de arredondamento que diz em exercícios anteriores, que o double dá uma inexatidão devolvendo um número alto.
Consegui, anteriormente vem explicando, consegui resolver, mas ainda n entendi mto bem, mas ta resolvido assim:
public class CandlestickFactoryTest {
@Test
public void sequenciaSimplesDeNegociacoes() {
Calendar hoje = Calendar.getInstance();
Negociacao
Negociacao
Negociacao
Negociacao
negociacao1
negociacao2
negociacao3
negociacao4
=
=
=
=
new
new
new
new
Negociacao(40.5,
Negociacao(45.0,
Negociacao(39.8,
Negociacao(42.3,
100,
100,
100,
100,
hoje);
hoje);
hoje);
hoje);
List<Negociacao> negociacoes = Arrays.asList(negociacao1, negociacao2,
negociacao3, negociacao4);
CandlestickFactory fabrica = new CandlestickFactory();
Candlestick candle = fabrica.constroiCandleParaData(hoje, negociacoes);
Assert.assertEquals(40.5, candle.getAbertura(), 0.00001);
Assert.assertEquals(42.3, candle.getFechamento(), 0.00001);
Assert.assertEquals(39.8, candle.getMinimo(), 0.00001);
Assert.assertEquals(45.0, candle.getMaximo(), 0.00001);
Assert.assertEquals(16760.0, candle.getVolume(), 0.00001);
}
}
Agora parei nesse: Que na verdade nao consegui resolver há um tampão e resolvi refazer os exercícios
- (opcional) Nosso teste para quando não há negociações na CandlestickFactory está verificando apenas
se o volume é zero. Ele também poderia verificar que os outros valores dessa candle são zero.
Modifique o método semNegociacoesGeraCandleComZeros e adicione os asserts faltantes de abertura,
fechamento, mínimo e máximo.
O teste vai parar de passar!
Corrija ele da mesma forma que resolvemos o problema para as variáveis abertura e fechamento .
Ainda estou agarrado nesse exercício, alguém pode ajudar? Na verdade eu tinha aberto o tópico para esse mesmo exercício Teste JUnit esse último.