Unity3d JsonUtility.From Json (), прочитанное из TextAsset, работает в приложении, не работает в Test Runner - PullRequest
0 голосов
/ 06 мая 2020

Следующий код отлично работает в моем приложении (Unity 2019.3.0f6). Он читает из Assets / Resources / Lesson-text. json и записывает ожидаемые журналы в консоль:

// file to read lessons from
public TextAsset jsonFile;

 internal JsonLessonList LoadLessonFromFile()
{
    JsonLessonList testLessonList = JsonUtility.FromJson<JsonLessonList>(jsonFile.text);

    foreach (JsonLesson lesson in testLessonList.jsonLessonList)
    {
        Debug.Log("Found lesson: " + lesson.Name);
    }

    return testLessonList;
}

Я хочу прочитать тот же файл при использовании Unity Test Runner:

    [UnityTest]
    public IEnumerator TestFileParsesOkTest()
    {
        JsonLessonList testLessonList = jsonReader.LoadLessonFromFile();
        Assert.IsNotNull(testLessonList);

        yield return null;
    }

, но я продолжаю получать это исключение:

TestFileParsesOkTest (0.019s)

Необработанное сообщение журнала: '[Exception] NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта '. Используйте UnityEngine.TestTools.LogAssert.Expect

JsonReader.LoadLessonFromFile () (в Assets / Scripts / JsonReader.cs: 68)

JsonReader.Start () (в Assets / Scripts / JsonReader. cs: 37)

NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта

Я знаю, что формат файла в порядке, потому что он работает из приложения. Я думаю, проблема в том, что "TextAsset jsonFile", установленный с помощью редактора единства, не виден Test Runner. Как мне сделать эту работу?

    [Test]
    public void JsonFileResourceTest()
    {
        Assert.IsNotNull(jsonReader.jsonFile);
    }

приводит к:

JsonFileResourceTest (0,020 с)

Ожидается: не равно null Но было: null

(Тег разработки, управляемой тестами, связан с тем, что я получил самое простое чтение файла с одним работающим полем, и теперь я хочу создать резервную копию и написать для него модульный тест, а затем написать тесты перед дальнейшим кодированием.)

1 Ответ

0 голосов
/ 07 мая 2020

разобрался:

[SetUp]
public void Setup()
{
    jsonReader = new GameObject().AddComponent<JsonReader>();
    jsonReader.jsonFile = Resources.Load("lesson-test") as TextAsset;
}

// Verify class exists
[Test]
public void JsonReaderClassExists()
{
    Assert.IsNotNull(jsonReader);
    Assert.IsNotNull(jsonReader.jsonFile);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...