Mise à JOUR
Un bug a été déposé pour cette question ici: https://youtrack.jetbrains.com/issue/KT-17951
Mise à JOUR 2
Le bogue a été corrigé dans Android Studio 3.0 Canaries 3
Post Original
J'ai juste commencé à jouer avec Android Studio 3.0, j'ai activé kotlin soutien de l'obtenir-aller. J'ai écrit un vraiment simple Kotlin classe dans mon projet:
data class Wallet(val coins: Int) {
fun add(value: Int): Wallet = Wallet(coins + value)
fun substract(value: Int): Wallet = if (coins > value) Wallet(coins + value) else throw InsufficientFundsException()
}
Maintenant, je voulais tester la classe, j'ai d'abord écrit un exécutant localement unittest (répertoire de test) dans Kotlin:
class WalletTestKotlin {
@Throws(Exception::class)
@Test
fun add() {
Assert.assertEquals(22, Wallet(20).add(2).coins.toLong())
Assert.assertNotEquals(5, Wallet(2).add(13).coins.toLong())
}
}
Il compile et s'exécute, mais avec le message d'erreur:
Classe non trouvé: "com.agentknopf.hachi.référentiel.de modèle.WalletTestKotlin"Vide de test suite.
J'ai donc ré-écrit le test en Java:
public class WalletTest {
@Throws(exceptionClasses = Exception.class)
@Test
public void add() {
Assert.assertEquals(22, new Wallet(20).add(2).getCoins());
Assert.assertNotEquals(5, new Wallet(2).add(13).getCoins());
}
}
Cependant que le test a échoué aussi bien cette fois, le Kotlin classe "porte-monnaie" n'a pas pu être trouvé:
java.lang.NoClassDefFoundError: com/example/repository/modèle/porte-monnaie
Je me demande si je suis absent quelque chose ... cours d'Exécution Java de Test, qui ne se réfère pas à Kotlin classes, mais à des classes Java uniquement termine avec succès.
Mon projet de construction.gradle fichier est celui par défaut:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.1.2-4'
repositories {
maven { url 'https://maven.google.com' }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Les dépendances de mon Module spécifique à la construire.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
//Kotlin support
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
//Testing libraries
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
testCompile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}