GithubHelp home page GithubHelp logo

neutrino's People

Contributors

bbonagura9 avatar demboscki avatar nascimentolwtn avatar rmonico avatar rodrigoalmeidaee avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

nascimentolwtn

neutrino's Issues

org.eclipse.ui.actions deprecated

O extension point do Eclipse usado pelo Neutrino está deprecated (org.eclipse.ui.actions). Ele foi trocado pelo org.eclipse.ui.commands. Não sei até quando vai continuar funcionando.

É preciso uma reformulação da parte que lida com isso, pois parece que os commands funcionam diferente dos actions.

Problema com parsing de código

Esse erro veio de um dos alunos que tentou usar o Neutrino no laboratóro:

java.lang.RuntimeException: Parsing failed
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.getParsedCode(EclipseTestSmellDetector.java:91)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.run(EclipseTestSmellDetector.java:61)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.run(EclipseTestSmellDetector.java:51)
at org.ita.neutrino.testsmells.ActionController.runDetection(ActionController.java:51)
at org.ita.neutrino.testsmells.ActionController.run(ActionController.java:42)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
Caused by: org.ita.neutrino.astparser.BlockParser$UnsupportedSintaxException: Sintax não suportada.
at org.ita.neutrino.astparser.BlockParser.parseVariableDeclaration(BlockParser.java:123)
at org.ita.neutrino.astparser.BlockParser.parseStatement(BlockParser.java:61)
at org.ita.neutrino.astparser.BlockParser.parse(BlockParser.java:48)
at org.ita.neutrino.astparser.ASTParser.parseAllCodeBlocksInWorkspace(ASTParser.java:198)
at org.ita.neutrino.astparser.ASTParser.parse(ASTParser.java:76)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.getParsedCode(EclipseTestSmellDetector.java:89)
... 34 more

O código que ele usou é o seguinte:

@RunWith(JMock.class)
public class TestDAO {
Mockery ctx = new JUnit4Mockery();
@test
public void deveAdicionarObjetoAoCache(){
final BasicDao dao = ctx.mock(BasicDao.class);
ProxyDao proxy = new ProxyDao(dao);
final Identifiable obj = ctx.mock(Identifiable.class);
ctx.checking(new Expectations(){{
oneOf(dao).insert(obj);
allowing(obj).getID(); will(returnValue(0));
}});
proxy.insert(obj);
assertTrue(proxy.isCached(obj));
}

@Test
public void deveAdicionarAoCacheERecuperarObjeto(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final Identifiable obj = ctx.mock(Identifiable.class);
    ctx.checking(new Expectations(){{
        oneOf(dao).insert(obj);
        allowing(obj).getID(); will(returnValue(0));
    }});
    proxy.insert(obj);
    assertTrue(proxy.isCached(obj));
    assertEquals(obj,proxy.getByID(obj.getID()));
}

@Test
public void deveRecuperarObjetoPorIdEAdicionarAoCache(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final Identifiable obj = ctx.mock(Identifiable.class);
    final Object id = new Integer(1);
    ctx.checking(new Expectations(){{
        allowing(obj).getID(); will(returnValue(id));
        oneOf(dao).getByID(id); will(returnValue(obj));
    }});
    assertFalse(proxy.isCached(obj));
    Identifiable found = proxy.getByID(id);
    assertTrue(proxy.isCached(obj));
    assertEquals(obj, found);
}

@Test
public void deveAtualizarObjetoNoCache(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final Object id = new Integer(1);
    final Identifiable obj1 = new IdentifiableMock(id);
    final Identifiable obj2 = new IdentifiableMock(id);
    ctx.checking(new Expectations(){{
        oneOf(dao).insert(obj1);
        oneOf(dao).update(obj2);
    }});
    assertFalse(obj1.equals(obj2));
    proxy.insert(obj1);
    assertFalse(proxy.isCached(obj2));
    proxy.update(obj2);
    assertTrue(proxy.isCached(obj2));
}

@Test
public void deveExcluirObjetoDoCache(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final Object id = new Integer(1);
    final Identifiable obj = new IdentifiableMock(id);
    ctx.checking(new Expectations(){{
        oneOf(dao).insert(obj);
        oneOf(dao).delete(id);
    }});
    proxy.insert(obj);
    proxy.delete(id);
    assertFalse(proxy.isCached(obj));
}
@Test
public void deveAdicionarListaAoCache(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final List<Identifiable> objetos = new ArrayList<Identifiable>();
    for(int i = 1; i<=5; i++){
        objetos.add(new IdentifiableMock(i));
    }
    ctx.checking(new Expectations(){{
        exactly(5).of(dao).insert(with(any(IdentifiableMock.class)));
        oneOf(dao).list(); will(returnValue(objetos));
    }});
    for(Identifiable obj : objetos){
        proxy.insert(obj);
    }
    List<Identifiable> lista = proxy.list();
    assertEquals(objetos, lista);
}

@Test
public void deveAdicionarRecarregarListaQuandoDeletaObjeto(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final List<Identifiable> objetos = new ArrayList<Identifiable>();
    for(int i = 0; i<5; i++){
        objetos.add(new IdentifiableMock(i));
    }
    ctx.checking(new Expectations(){{
        exactly(5).of(dao).insert(with(any(IdentifiableMock.class)));
        exactly(2).of(dao).list(); will(returnValue(objetos));
        oneOf(dao).delete(4);
    }});
    for(Identifiable obj : objetos){
        proxy.insert(obj);
    }
    proxy.list();
    proxy.delete(4);
    objetos.remove(4);
    proxy.list();
    List<Identifiable> lista = proxy.list();
    assertEquals(objetos, lista);
}

@Test
public void deveAdicionarRecarregarListaQuandoInsereObjeto(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final List<Identifiable> objetos = new ArrayList<Identifiable>();
    final Identifiable obj = new IdentifiableMock(5);
    for(int i = 0; i<5; i++){
        objetos.add(new IdentifiableMock(i));
    }
    ctx.checking(new Expectations(){{
        exactly(5).of(dao).insert(with(any(IdentifiableMock.class)));
        exactly(2).of(dao).list(); will(returnValue(objetos));
        oneOf(dao).insert(obj);
    }});
    for(Identifiable ident : objetos){
        proxy.insert(ident);
    }
    proxy.list();
    proxy.insert(obj);
    objetos.add(obj);
    proxy.list();
    List<Identifiable> lista = proxy.list();
    assertEquals(objetos, lista);
}
@Test
public void deveRemoverCacheComExcecaoNoInsert(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final Object id = new Integer(1);
    final Identifiable obj = new IdentifiableMock(id);
    ctx.checking(new Expectations(){{
        oneOf(dao).insert(obj); will(throwException(new RuntimeException()));
    }});
    try{
        proxy.insert(obj);
        fail();
    }
    catch(RuntimeException e){
        assertFalse(proxy.isCached(obj));   
    }
}
@Test
public void deveRemoverCacheComExcecaoNoUpdate(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final Object id = new Integer(1);
    final Identifiable obj = new IdentifiableMock(id);
    ctx.checking(new Expectations(){{
        oneOf(dao).insert(obj);
        oneOf(dao).update(obj); will(throwException(new RuntimeException()));
    }});
    try{
        proxy.insert(obj);
        proxy.update(obj);
        fail();
    }
    catch(RuntimeException e){
        assertFalse(proxy.isCached(obj));   
    }
}
@Test
public void deveRemoverCacheComExcecaoNoDelete(){
    final BasicDao dao = ctx.mock(BasicDao.class);
    ProxyDao proxy = new ProxyDao(dao);
    final Object id = new Integer(1);
    final Identifiable obj = new IdentifiableMock(id);
    ctx.checking(new Expectations(){{
        oneOf(dao).insert(obj);
        oneOf(dao).delete(id); will(throwException(new RuntimeException()));
    }});
    try{
        proxy.insert(obj);
        proxy.delete(id);
        fail();
    }
    catch(RuntimeException e){
        assertFalse(proxy.isCached(obj));   
    }
}


private class IdentifiableMock implements Identifiable{
    public Object ID;
    public IdentifiableMock(Object id) {
        this.ID = id;
    }
    public IdentifiableMock(int id){
        this.ID = new Integer(id);
    }
    @Override
    public Object getID() {
        return ID;
    }
}

}

Falha na execução do Add explanation

Deu esse erro:

java.lang.NullPointerException
at org.ita.neutrino.astparser.SourceFileParser$ImportVisitor.visit(SourceFileParser.java:49)
at org.eclipse.jdt.core.dom.ImportDeclaration.accept0(ImportDeclaration.java:220)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2585)
at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:218)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
at org.ita.neutrino.astparser.SourceFileParser.populateImportList(SourceFileParser.java:176)
at org.ita.neutrino.astparser.SourceFileParser.parse(SourceFileParser.java:166)
at org.ita.neutrino.astparser.ASTParser.parseAllSourceFilesInWorkspace(ASTParser.java:118)
at org.ita.neutrino.astparser.ASTParser.parse(ASTParser.java:72)
at org.ita.neutrino.abstracrefactoring.AbstractEclipseRefactoringAction.doCodeParsing(AbstractEclipseRefactoringAction.java:130)
at org.ita.neutrino.abstracrefactoring.AbstractEclipseRefactoringAction.run(AbstractEclipseRefactoringAction.java:60)
at org.ita.neutrino.testsmells.smells.NeutrinoRefactoringForEclipseProvider$1.run(NeutrinoRefactoringForEclipseProvider.java:24)
at org.ita.neutrino.testsmells.core.EclipseQuickFixRunner.run(EclipseQuickFixRunner.java:30)
at org.eclipse.jdt.internal.ui.text.correction.proposals.MarkerResolutionProposal.apply(MarkerResolutionProposal.java:53)
at org.eclipse.jface.text.contentassist.CompletionProposalPopup.insertProposal(CompletionProposalPopup.java:935)
at org.eclipse.jface.text.contentassist.CompletionProposalPopup.insertSelectedProposalWithMask(CompletionProposalPopup.java:881)
at org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$27(CompletionProposalPopup.java:877)
at org.eclipse.jface.text.contentassist.CompletionProposalPopup$5.widgetDefaultSelected(CompletionProposalPopup.java:657)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:119)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

Com esse código:

import org.junit.Test;
import org.junit.Before;
import static org.junit.Assert.*;

public class TesteCarro {
private Carro[] carro;
@before
public void criaReferencia(){
carro = new Carro[3];
carro[0]= new Carro("delta", 200 , 400);
carro[1]= new Carro("A", -2 , -4 );
carro[2]= new Carro("A", 500 , 900.3);
}
@test
public void testeConstrutor(){
verificaCondIniciais();
}
@test
private void verificaCondIniciais() {
assertTrue("lala",carro[0].getVelocidade() == 0);
assertTrue("lala",carro[0].getPotencia() == 400);
assertTrue(carro[0].getVelocMax() == 200);
assertTrue(carro[0].getApelido().equals("delta"));
assertTrue(carro[0].getAceleracao() == 0.1_carro[0].getPotencia());
assertTrue(carro[0].getPorcent()== 0.7);
assertTrue(carro[0].getReducao()== 0.5);
}
@test
public void testaconstrutor2(){
assertTrue ("Em caso de valor invalido a potencia default é 1", carro[1].getPotencia() == 1);
assertTrue("Em caso de valor invalido a velocidade maxima default é 3", carro[1].getVelocMax() == 3);
carro[1].setPorcent(9);
carro[1].setReducao(-1);
assertTrue("Em caso de setar valor invalido, porcent deve continuar com 0.7, default", carro[1].getPorcent()== 0.7);
assertTrue("Valor invalido de reducao, permanece o valor de default: 0.5", carro[1].getReducao()== 0.5);
carro[1].setPorcent(0.8);
carro[1].setReducao(0.3);
assertTrue("Testando se o valor 0.8 foi setado corretamente", carro[1].getPorcent() == 0.8);
assertTrue("Testando se o valor 0.3 foi setado corretamente para a variavel reducao", carro[1].getReducao() == 0.3);
}
@test
public void testaAlgoritmoVeloc(){
while (carro[2].getVelocidade()< carro[2].getVelocMax()_carro[2].getPorcent()){
carro[2].acelerar();
}
assertTrue("Verificando se a velocidade fica igual a porcent_velocidade, antes de ficar maior",
carro[2].getVelocidade() == carro[2].getVelocMax()_carro[2].getPorcent());
assertTrue("Verificando se a aceleracao mudou para a reduzida, apos atingir porcent_velocidade"
, carro[2].getAceleracao()== carro[2].getPotencia()_0.1*carro[2].getReducao());
for(int i =0 ; i < 50; i++){
carro[2].acelerar();
}
assertTrue("Testando se a velocidade nao ultrapassou a maxima, mesmo apos varias chamadas do metodo acelerar"
, carro[2].getVelocidade() == carro[2].getVelocMax());
}
@test
public void testaAlgoritmoFrear(){

      int i = 0;
      double aux;

      carro[2].frear();
      assertTrue("Verificando se a velocidade nao fica menor que zero quando freia", carro[2].getVelocidade() == 0);
      carro[2].acelerar();
      carro[2].acelerar();
      for(i =0 ; i < 3; i++){
          carro[2].frear();
      }
      assertTrue("Velocidade minima é zero", carro[2].getVelocidade() == 0);

      for(i =0 ; i < 3; i++){
          carro[2].acelerar();
      }
      aux = carro[2].getVelocidade();
      carro[2].frear();
      assertTrue("Testando algoritmo pra frear numa situacao normal", carro[2].getVelocidade() == aux - carro[2].getAceleracao());
}

}

Parsing de arquivos duplicados

Ocorre quando há dois arquivos com o mesmo nome, no mesmo pacote e em projetos diferentes (no mesmo workspace). O parsing é finalizado sem levantar exceção, nenhum sintoma externo ou causa aparente.

Não funciona detecção de bad smells com import org.junit.*;

Deu esse erro:

java.lang.ClassCastException: org.eclipse.jdt.core.dom.PackageBinding cannot be cast to org.eclipse.jdt.core.dom.ITypeBinding
at org.ita.neutrino.astparser.SourceFileParser$ImportVisitor.visit(SourceFileParser.java:44)
at org.eclipse.jdt.core.dom.ImportDeclaration.accept0(ImportDeclaration.java:220)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2585)
at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:218)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
at org.ita.neutrino.astparser.SourceFileParser.populateImportList(SourceFileParser.java:176)
at org.ita.neutrino.astparser.SourceFileParser.parse(SourceFileParser.java:166)
at org.ita.neutrino.astparser.ASTParser.parseAllSourceFilesInWorkspace(ASTParser.java:118)
at org.ita.neutrino.astparser.ASTParser.parse(ASTParser.java:72)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.getParsedCode(EclipseTestSmellDetector.java:89)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.run(EclipseTestSmellDetector.java:61)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.run(EclipseTestSmellDetector.java:51)
at org.ita.neutrino.testsmells.ActionController.runDetection(ActionController.java:51)
at org.ita.neutrino.testsmells.ActionController.run(ActionController.java:42)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

Com esse código:

import org.junit.;
import static org.junit.Assert.
;

public class TesteCarro {
private Carro[] carro;
@before
public void criaReferencia(){
carro = new Carro[3];
carro[0]= new Carro("delta", 200 , 400);
carro[1]= new Carro("A", -2 , -4 );
carro[2]= new Carro("A", 500 , 900.3);
}
@test
public void testeConstrutor(){
verificaCondIniciais();
}
@test
private void verificaCondIniciais() {
assertTrue("lala",carro[0].getVelocidade() == 0);
assertTrue(carro[0].getPotencia() == 400);
assertTrue(carro[0].getVelocMax() == 200);
assertTrue(carro[0].getApelido().equals("delta"));
assertTrue(carro[0].getAceleracao() == 0.1_carro[0].getPotencia());
assertTrue(carro[0].getPorcent()== 0.7);
assertTrue(carro[0].getReducao()== 0.5);
}
@test
public void testaconstrutor2(){
assertTrue ("Em caso de valor invalido a potencia default é 1", carro[1].getPotencia() == 1);
assertTrue("Em caso de valor invalido a velocidade maxima default é 3", carro[1].getVelocMax() == 3);
carro[1].setPorcent(9);
carro[1].setReducao(-1);
assertTrue("Em caso de setar valor invalido, porcent deve continuar com 0.7, default", carro[1].getPorcent()== 0.7);
assertTrue("Valor invalido de reducao, permanece o valor de default: 0.5", carro[1].getReducao()== 0.5);
carro[1].setPorcent(0.8);
carro[1].setReducao(0.3);
assertTrue("Testando se o valor 0.8 foi setado corretamente", carro[1].getPorcent() == 0.8);
assertTrue("Testando se o valor 0.3 foi setado corretamente para a variavel reducao", carro[1].getReducao() == 0.3);
}
@test
public void testaAlgoritmoVeloc(){
while (carro[2].getVelocidade()< carro[2].getVelocMax()_carro[2].getPorcent()){
carro[2].acelerar();
}
assertTrue("Verificando se a velocidade fica igual a porcent_velocidade, antes de ficar maior",
carro[2].getVelocidade() == carro[2].getVelocMax()_carro[2].getPorcent());
assertTrue("Verificando se a aceleracao mudou para a reduzida, apos atingir porcent_velocidade"
, carro[2].getAceleracao()== carro[2].getPotencia()_0.1*carro[2].getReducao());
for(int i =0 ; i < 50; i++){
carro[2].acelerar();
}
assertTrue("Testando se a velocidade nao ultrapassou a maxima, mesmo apos varias chamadas do metodo acelerar"
, carro[2].getVelocidade() == carro[2].getVelocMax());
}
@test
public void testaAlgoritmoFrear(){

      int i = 0;
      double aux;

      carro[2].frear();
      assertTrue("Verificando se a velocidade nao fica menor que zero quando freia", carro[2].getVelocidade() == 0);
      carro[2].acelerar();
      carro[2].acelerar();
      for(i =0 ; i < 3; i++){
          carro[2].frear();
      }
      assertTrue("Velocidade minima é zero", carro[2].getVelocidade() == 0);

      for(i =0 ; i < 3; i++){
          carro[2].acelerar();
      }
      aux = carro[2].getVelocidade();
      carro[2].frear();
      assertTrue("Testando algoritmo pra frear numa situacao normal", carro[2].getVelocidade() == aux - carro[2].getAceleracao());
}

}

Problema com package

Deu esse erro:

java.lang.ClassCastException: org.eclipse.jdt.core.dom.PackageBinding cannot be cast to org.eclipse.jdt.core.dom.ITypeBinding
at org.ita.neutrino.astparser.SourceFileParser$ImportVisitor.visit(SourceFileParser.java:44)
at org.eclipse.jdt.core.dom.ImportDeclaration.accept0(ImportDeclaration.java:220)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2480)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2551)
at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:218)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2480)
at org.ita.neutrino.astparser.SourceFileParser.populateImportList(SourceFileParser.java:176)
at org.ita.neutrino.astparser.SourceFileParser.parse(SourceFileParser.java:166)
at org.ita.neutrino.astparser.ASTParser.parseAllSourceFilesInWorkspace(ASTParser.java:118)
at org.ita.neutrino.astparser.ASTParser.parse(ASTParser.java:72)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.getParsedCode(EclipseTestSmellDetector.java:89)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.run(EclipseTestSmellDetector.java:61)
at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.run(EclipseTestSmellDetector.java:51)
at org.ita.neutrino.testsmells.ActionController.runDetection(ActionController.java:51)
at org.ita.neutrino.testsmells.ActionController.run(ActionController.java:42)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)

Com esse código:

package tests;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.List;

import codigosFonte.*;

import org.junit.Before;
import org.junit.Test;

public class IdentifiableDaoProxyTest {
IdentifiableDao mock;
List aux20,aux50,vazio;
MockIdentifiable mi, mi99, mi21, mi19;
IdentifiableDaoProxy idp;

@Before
public void setarVariaveis(){
    vazio = new ArrayList<MockIdentifiable>();
    aux20 = new ArrayList<MockIdentifiable>();
    for(int i=0;i<20;i++){
        aux20.add(new MockIdentifiable(i));
    }
    aux50 = new ArrayList<MockIdentifiable>();
    for(int i=100;i<150;i++){
        aux50.add(new MockIdentifiable(i));
    }
    mi99 = new MockIdentifiable(99);
    mi21 = new MockIdentifiable(21);
}

@Test
public void bancoVazioTest(){
    mock = new IdentifiableDao(vazio);
    idp = new IdentifiableDaoProxy(mock);
    assertEquals(idp.list(), vazio);
}

@Test
public void getByIDTest1(){
    mock = new IdentifiableDao(aux20);
    idp = new IdentifiableDaoProxy(mock);
    assertEquals(idp.getByID(1), mock.getByID(1));
    assertEquals(idp.getByID(12), mock.getByID(12));
    assertEquals(idp.getByID(22), mock.getByID(22));
}

@Test
public void getByIDTest2(){
    mock = new IdentifiableDao(aux50);
    idp = new IdentifiableDaoProxy(mock);
    assertEquals(idp.getByID(100), mock.getByID(100));
    assertEquals(idp.getByID(142), mock.getByID(142));
    assertEquals(idp.getByID(92), mock.getByID(92));
}

@Test
public void updateTestConsistencia(){
    mock = new IdentifiableDao(aux50);
    idp = new IdentifiableDaoProxy(mock);
    idp.insert(mi99);
    assertEquals(idp.getByID(99), mock.getByID(99));
    idp.update(mi99);
    assertEquals(idp.getByID(1099), mock.getByID(1099));
}

@Test
public void updateTestObjeto(){
    mock = new IdentifiableDao(aux50);
    idp = new IdentifiableDaoProxy(mock);
    idp.insert(mi21);
    assertEquals(idp.getByID(21), mi21);
    idp.update(mi21);
    assertEquals(mi21.getID(), 1021);
    assertEquals(idp.getByID(1021), mi21);
}

@Test
public void insertTestConsitencia(){
    mock = new IdentifiableDao(aux20);
    idp = new IdentifiableDaoProxy(mock);
    mi = new MockIdentifiable(50);
    idp.insert(mi);
    assertEquals(idp.getByID(50), mock.getByID(50));
}

@Test
public void insertTestObjeto(){
    mock = new IdentifiableDao(aux20);
    idp = new IdentifiableDaoProxy(mock);
    mi = new MockIdentifiable(50);
    idp.insert(mi);
    assertEquals(idp.getByID(50), mi);
}

@Test
public void listTestRetornarPrimeira(){
    mock = new IdentifiableDao(aux50);
    idp = new IdentifiableDaoProxy(mock);
    assertEquals(idp.list(), mock.list());
    mock.insert(mi21);
    assertFalse(idp.list() == mock.list());
}

@Test
public void listTestObjeto(){
    mock = new IdentifiableDao(aux20);
    idp = new IdentifiableDaoProxy(mock);
    assertEquals(idp.list(), mock.list());
    mock.insert(mi21);
    mock.insert(mi99);
    assertFalse(idp.list().contains(mi21));
    assertFalse(idp.list().contains(mi99));
}

@Test
public void deleteTestConsitencia1(){
    mock = new IdentifiableDao(aux50);
    idp = new IdentifiableDaoProxy(mock);
    Integer id = 19;
    idp.delete(id);
    assertEquals(idp.getByID(id), mock.getByID(id));
    assertEquals(null, idp.getByID(id));
    assertEquals(null, mock.getByID(id));
}

@Test
public void deleteTestConsistencia2(){
    mock = new IdentifiableDao(aux20);
    idp = new IdentifiableDaoProxy(mock);
    mi = new MockIdentifiable(50);
    Integer id = 10;
    idp.delete(id);
    assertEquals(idp.getByID(id), mock.getByID(id));
    assertEquals(null, idp.getByID(id));
    assertEquals(null, mock.getByID(id));
}

@Test
public void deleteExceptionTest1(){
    mock = new IdentifiableDao(aux20);
    idp = new IdentifiableDaoProxy(mock);
    assertEquals(mock.list(),idp.list());
    mock.delete(2);
    mock.delete(3);
    mock.delete(4);     
    assertNotSame(mock.list(),idp.list());
    idp.delete(2);
    idp.list();
    assertEquals(mock.list(),idp.list());   
}

@Test
public void insertExceptionTest2(){
    mock = new IdentifiableDao(aux20);
    idp = new IdentifiableDaoProxy(mock);
    assertEquals(mock.list(),idp.list());
    mock.delete(4);
    assertNotSame(mock.list(),idp.list());
    idp.insert(null);   
    assertEquals(mock.list(),idp.list());   
}

@Test
public void updateExceptionTest3(){
    mock = new IdentifiableDao(aux50);
    idp = new IdentifiableDaoProxy(mock);
    assertEquals(mock.list(),idp.list());
    mock.delete(120);
    mock.delete(122);
    mock.delete(114);
    assertNotSame(mock.list(),idp.list());
    idp.update(idp.getByID(100));
    assertNull(idp.getByID(100));
    assertNotSame(mock.list(),idp.list());
    idp.update(idp.getByID(120));
    assertEquals(mock.list(),idp.list());   
}

}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.