neutrino's People
Forkers
nascimentolwtnneutrino'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());
}
}
"Add explanation to assertion" não faz nada quando selecionado
Seria interessante que ao menos a função abrisse as aspas dentro do assert para ficar claro para o usuário do Neutrino que deve ser adicionado um comentário ali. Algumas pessoas não entendem o que significa essa função.
Falha na detecção de bad smells em projetos ao mesmo tempo
Quando busco bad smells em um projeto X e depois quero mudar para outro projeto, a detecção de bad smells para de funcionar.
Botão de fazer detecção de bad smells automático não funciona
Ao selecionar a opção para detectar os bad smells automaticamente, ele não está ficando selecionado e nem está fazendo a detecção automática.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.