Образец AutoValue: ошибка: не удается найти класс символов AutoValue_Animal - PullRequest
2 голосов
/ 08 октября 2019

Я пытаюсь узнать о @AutoValue. Я следую примеру в https://github.com/google/auto/blob/master/value/userguide/index.md

Я использую Android Studio 3.4

Я добавляю свою зависимость от gradle

    implementation 'com.google.auto.value:auto-value-annotations:1.6.6'
    annotationProcessor 'com.google.auto.value:auto-value:1.6.6'

Я также использую

classpath 'com.android.tools.build:gradle:3.4.2'

и

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

У меня есть код, указанный ниже

@AutoValue
abstract class Animal {
    static Animal create(String name, int numberOfLegs) {
        return new AutoValue_Animal(name, numberOfLegs);
    }

    abstract String name();
    abstract int numberOfLegs();
}

и

public class ExampleUnitTest {
    @Test
    public void testAnimal() {
        Animal dog = Animal.create("dog", 4);
        assertEquals("dog", dog.name());
        assertEquals(4, dog.numberOfLegs());

        // You probably don't need to write assertions like these; just illustrating.
        assertTrue(Animal.create("dog", 4).equals(dog));
        assertFalse(Animal.create("cat", 4).equals(dog));
        assertFalse(Animal.create("dog", 2).equals(dog));

        assertEquals("Animal{name=dog, numberOfLegs=4}", dog.toString());
    }
}

Когда я запускаю тест, он выдает ошибку

error: cannot find symbol class AutoValue_Animal    

Что я пропустил?

Добавлен мой репозиторий дизайна в https://github.com/elye/issue_android_auto_value

1 Ответ

0 голосов
/ 09 октября 2019

Видимо, проблема в том, что я положил

@AutoValue
abstract class Animal {
    static Animal create(String name, int numberOfLegs) {
        return new AutoValue_Animal(name, numberOfLegs);
    }

    abstract String name();
    abstract int numberOfLegs();
}

в тестовую папку вместо исходной. Перемещение его в исходную папку (в том же месте, что и MainActivity) решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...