Ingo Reschke » Posts in 'Eclipse' category

maven android eclipse

prerequired:

  • Maven3 installed
  • Eclipse 3.7 or greater
  • maven – plugin
  • android plugin

create sturcture with maven.
Terminal:
go to Project Folder.

mvn archetype:generate | grep android
46: remote -> com.googlecode.android-player-root-archetype:parent-archetype (-)
110: remote -> com.vektorsoft.demux.tools:demux-android-archetype (Create Android application structure for DEMUX Framework applications)
117: remote -> de.akquinet.android.archetypes:android-gcm-quickstart (Creates a skeleton for a GCM Android application)
118: remote -> de.akquinet.android.archetypes:android-library-quickstart (Creates a skeleton for an Android library)
119: remote -> de.akquinet.android.archetypes:android-quickstart (Creates a skeleton for an Android application)
120: remote -> de.akquinet.android.archetypes:android-release (Creates a skeleton for an Android application,
121: remote -> de.akquinet.android.archetypes:android-with-test (Creates a skeleton for an Android application and instrumentation tests)
122: remote -> de.akquinet.android.archetypes:stand-archetype (Creates a skeleton for an Android application using the Stand framework stack)
531: remote -> org.eclipse.xtend:xtend-android-archetype (-)
826: remote -> ru.nikitav.android.archetypes:release (-)
827: remote -> ru.nikitav.android.archetypes:release-robolectric (-)
^C

Keep ID 119 in mind and enter it.

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 296: 119

Choose a version (latest recommend)

Choose de.akquinet.android.archetypes:android-quickstart version: 
1: 1.0.0
2: 1.0.1
3: 1.0.2
4: 1.0.3
5: 1.0.4
6: 1.0.5
7: 1.0.6
8: 1.0.7
9: 1.0.8
10: 1.0.9
11: 1.0.10
12: 1.0.11

Define a groupId, artefactId, version, package etc. and confirm with Y:

Define value for property 'groupId': : de.ingoreschke.annuitycalculator
Define value for property 'artifactId': : app-full
Define value for property 'version':  1.0-SNAPSHOT: : 1.0.0
Define value for property 'package':  de.ingoreschke.annuitycalculator: : de.ingoreschke.annuitycalculator.full
Define value for property 'android-plugin-version':  3.6.0: : 
Define value for property 'emulator':  not-specified: : 
Define value for property 'platform':  16: : 17
Confirm properties configuration:
groupId: de.ingoreschke.annuitycalculator
artifactId: app-full
version: 1.0.0
package: de.ingoreschke.annuitycalculator.full
android-plugin-version: 3.6.0
emulator: not-specified
platform: 16

New Module in Main pom.xml

<?xml version="1.0" encoding="UTF-8"?>
  2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.o
  3   <modelVersion>4.0.0</modelVersion>
  4   <groupId>de.ingoreschke</groupId>
  5   <artifactId>annuitycalculator</artifactId>
  6   <version>0.0.1-SNAPSHOT</version>
  7   <packaging>pom</packaging>
  8   <name>Main Project Folder</name>
  9   <description>This will be hold all sub projects Android, Java, Website to Annuity Calculator Project</description>
 10   <modules>
 11     <module>core</module>
 12     <module>app_full</module>
 13   </modules>
 14 </project>

Pom.xml in new Project app_full

<?xml version="1.0" encoding="UTF-8"?>
  2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.o
  3     <modelVersion>4.0.0</modelVersion>
  4     <parent>
  5     <artifactId>annuitycalculator</artifactId>
  6     <groupId>de.ingoreschke</groupId>
  7     <version>0.0.1-SNAPSHOT</version>
  8   </parent>
  9     <groupId>de.ingoreschke.annuitycalculator</groupId>
 10     <artifactId>app_full</artifactId>
 11     <version>1.0-SNAPSHOT</version>
 12     <packaging>apk</packaging>
 13     <name>app_full</name>
 14     <properties>
 15         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 16         <platform.version>4.1.1.4</platform.version>
 17         <android.plugin.version>3.6.0</android.plugin.version>
 18     </properties>
 19     <dependencies>
 20         <dependency>
 21             <groupId>com.google.android</groupId>
 22             <artifactId>android</artifactId>
 23             <version>${platform.version}</version>
 24             <scope>provided</scope>
 25         </dependency>
 26     </dependencies>
 27     <build>
 28         <finalName>${project.artifactId}</finalName>
 29         <pluginManagement>
 30             <plugins>
 31                 <plugin>
 32                     <groupId>com.jayway.maven.plugins.android.generation2</groupId>
 33                     <artifactId>android-maven-plugin</artifactId>
 34                     <version>${android.plugin.version}</version>
 35                     <extensions>true</extensions>
 36                 </plugin>
 37             </plugins>
 38         </pluginManagement>
 39         <plugins>
 40             <plugin>
 41                 <groupId>com.jayway.maven.plugins.android.generation2</groupId>
 42                 <artifactId>android-maven-plugin</artifactId>
 43                 <configuration>
 44                     <sdk>
 45                         <platform>16</platform>
 46                     </sdk>
 47                 </configuration>
 48             </plugin>
 49         </plugins>
 50     </build>
 51 </project>
<pre>
 
<pre lang="bash">mvn clean install

In Eclipse
Import the new Maven Modul.
After Import I got a Error:
Project 'app_full' is missing required source folder: 'src/test/java'
Fixed it by adding a folder test/java into src.
Bildschirmfoto 2013-09-11 um 00.28.35

Source: a screencast found on youtube. http://www.youtube.com/watch?v=S7XDsivkVUA

Posted in Eclipse, Java, Maven
Tags: , ,

Android adb emulator-5556 disconnected!

Trying to start run a simple android project on emulator I got this error message:"emulator-5556 disconnected! Canceling ...."

The solution to fix this:
go to Eclipse IDE -> window -> Show Views -> device -> view menu -> reset adb

Found here: androidforums.com

Posted in Eclipse, Tools

Eclipse Shortcuts

Alle die viel mit dem Computer arbeiten wissen, das Shortcuts einem das Leben enorm erleichtern.
Einziges Problem man muß sie kennen.
Da ich, als Programmierer, täglich mit Epclipse arbeite, habe ich mich auf die Suche nach Shortcut-Listen für Eclipse gemacht. Und was soll ich sagen es gibt tausende.
Hier einige ausgewählte.

Auch ganz nett um seine wichtigsten Shortcuts schnell zu lernen, der Shortcut-Trainer. Ein nerviges Plugin welches einem immer den Shortcut anzeigt wenn man sich über das Menü durchklickt.
http://www.mousefeed.com/
Ein netter Artikel dazu http://www.wolfgangschoch.com/blog/788-eclipse-shortcuts-trainer.html

Meine Lieblings-shortcuts

F4
Zeigt die Hierachie an. Sehr nützlich. Von welchem Classe wird abgeleitet? Welche weiteren Ableitungen gibt es?
Ctrl + Leertaste
Verfügbare Methoden anzeigen, Autovervollständigung
Ctrl + 1
Quickfix öffnen. Wenn ein Methodeaufruf einen error meldet. Cursor drauf und Ctrl+1. Quickfix Vorschläge werden angezeigt
Ctrl + Shift + O
Imports Organisieren (überflüssige löschen, notwendige hinzufügen)
Ctrl + Shift + G
zeige alle Referencen im Workspace.
Ctrl + s
Speichern
Alt + Shift + J
Javadoc comment skeleton erstellen.
Shift + F2
Javadoc aufrufen. (Java) mit Cusor auf einem Klassennamen. Es wird die API aufgerufen und zur Beschreibung der Klasse oder Methode gesprungen.
ALT + Pfeil Hoch / Pfeil Runter
Verschiebt die Zeile unter dem Cursor.
Ctrl + Shift + L
Zeigt alle verfügbaren Shortcuts an

Hinweis

Die hier aufgelisteten Shortcuts beziehen sich auf eine “normale” Eclips Installation mit Java Plugins.
Es gibt ja auch IDE´s, z.B. ColdFusion Builder, die auf Basis von Eclipse erstellt wurden. Diese IDE´s haben mitunter andere Shortcuts bzw. nicht die selben oder auch einfach nur deaktiviert.

Coldfusion Builder
Die Shortcuts für den Coldfusion Builder lassen sich wie folgt anzeigen.
Help -> Key Assist…

Meine Lieblings-shortcuts für den CF-Builder

Ctrl + Shift + D
cfdump var =”##”
Ctrl + Shift + O
umschließendes cfoutput … /cfoutput
Ctrl + Shift + H
umschließendes # … #
Ctrl + Shift + M
umschließendes Kommentar. Aus,- und Einkommentieren.

Diese Liste ist auch im Coldfusion Blog veröffentlicht.
http://www.coldfusion-blog.de/2010/09/16/685/

Posted in Cold Fusion, Eclipse, Java
Tags: , ,

JUnit 4 Tutorial

Nachdem Junit 4 in eclipse eingebunden wurde kann es benutzt werden, um Methoden automatisiert zu testen.

Eine einfache Klasse mit einer sehr einfachen Methode.
BasicArithmetics – Klasse.

package ingoreschke;
 
public class BasicArithmetics {
	/*Just a method to calculate the sum of 2 ints*/
	public static int sumInt(int val1, int val2){
		return val1 + val2;
	}
}

Die statische Methode sumInt(int val1, int val2) der Klasse soll 2 beliebige int Werte addieren.
Ob diese Methode korrekt funktioniert muß getestet werden.
7 = 3+4;
Erwartet wird, wenn der Methode 3, und 4 übergeben wird, dass sie 7 zurückliefert.
Nun die Testklasse und Testmethode dazu.
BasicArithmeticTest

package ingoreschke;
 
import org.junit.Assert;
import org.junit.Test;
 
public class BasicArithemticsTest {
	/*test whether the method sumInt() calculates the sum of 3+4=7*/
	@Test
	public void testSumInt(){
		Assert.assertEquals("Result of Sum", 7, BasicArithmetics.sumInt(3, 4) );
	}
}

Um den JUnit Test durchzuführen

  • rechte Maustaste auf die Testklasse (BasicArithmeticsTest)
  • Run As wählen
  • JUnit Test

In der JUnit View sollte so etwa zu sehen sein.

Grün = Test bestanden.

Nun erweitern wir die BasicArithmetic – Klasse um eine Methode die 2 int Werte differenziert.
Da die Differenz 2er natürlicher Zahlen auch gebrochene Zahlen hervorbringen kann geben wir double zurück.

/*Just calculate the difference between 2 ints*/
public static double diffInt(int val1, int val2){
	return val1/val2;			
}

Eine Testmethode dazu 5=10/2;

 /*test the method diffInt() */
@Test
public void testDiffInt(){
	Assert.assertEquals("Difference between 10 and 2", 5, BasicArithmetics.diffInt(10, 2),1);
}

Dies ist einfach und sollte auch mit grün druchlaufen.
Da auch gebrochene Zahlen entstehen können wird auch das getestet.

@Test
public void testDiffInt2(){
	Assert.assertEquals("Difference between 9 and 2", 4.5, BasicArithmetics.diffInt(9, 2),1);
}

Diese Methode wird auch mit Grün = Bestanden quittiert.
Hier sehen wir nun schon den Vorteil von automatisierten Tests gegenüber der “standard main – Methode.Wo manuell das Ergebniss kontrolliert werden muß. Diese JUnit tests können beliebig of durchgeführt werden.

Um gute Tests zu schreiben gehört es dazu, so genannte Bad Tests zu schreiben.
D.h. Ein Test gilt als bestanden wenn die zu testene Methoden einen vorhergesagten Fehler schmeißt.
In unseren Beispiel bei der Division durch 0.

@Test
public void testDiffInt3(){
	BasicArithmetics.diffInt(10,0);
}

schlägt also wie erwartet Fehl (Rot).
Im Fehler Trace – View kann man übrigens den Stacktrace sehen.

Damit der Test als bestanden gilt muß der Testmethode gesagt werden das wir diese Exception erwarten.
Dies tut man in der Annotation
@Test(expected = ArithmeticException.class)

@Test(expected = ArithmeticException.class)
	public void testDiffInt3(){
		BasicArithmetics.diffInt(10,0);
	}

Nun ist auch dieser Test bestanden.

Hier nochmal der komplette Sourcecode
BasicArithmetics

package ingoreschke;
 
import javax.print.attribute.standard.Finishings;
 
public class BasicArithmetics {
 
	/*Just a method to calculate the sum of 2 ints*/
	public static int sumInt(int val1, int val2){
		return val1 + val2;
	}
 
	/*Just calculate the difference between 2 ints*/
	public static double diffInt(int val1, int val2){
		return val1/val2;			
	}
}

BasicArithmeticsTest.java

package ingoreschke;
 
import org.junit.Assert;
import org.junit.Test;
 
public class BasicArithemticsTest {
 
	/*test whether the method sumInt() calculates the sum of 3+4=7*/
	@Test
	public void testSumInt(){
		Assert.assertEquals("Result of Sum", 7, BasicArithmetics.sumInt(3, 4) );
	}
	/*test the method diffInt() */
	@Test
	public void testDiffInt(){
		Assert.assertEquals("Difference between 10 and 2", 5, BasicArithmetics.diffInt(10, 2),1);
	}
 
	@Test
	public void testDiffInt2(){
		Assert.assertEquals("Difference between 9 and 2", 4.5, BasicArithmetics.diffInt(9, 2),1);
	}
	@Test(expected = ArithmeticException.class)
	public void testDiffInt3(){
		BasicArithmetics.diffInt(10,0);
	}
}

sourcecode als zip – Datei

weiterführende Links:

Posted in Eclipse, Java
Tags: ,

JUnit in eclipse aktivieren

JUnit ist bei einer Standardinstallation für Javaentwickler schon mit an board. Will man es benutzen so muß man nur die Libary in den Buildpath importieren.

Also

  • rechte Maustaste auf den Projektordner
  • Properties auswählen (ALT Enter)
  • linke Maustaste auf Java Build Path
  • Reiter Libraries auswählen

  • linke Maustaste auf Add Library

  • JUnit auswählen
  • und im darauf folgenden Fenster JUnit Version auswählen

  • Finish drücken
  • ok drücken

Jetzt sollte die JUnit 4 Library eingebunden sein.

Posted in Eclipse, Java
Tags: , ,