You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
flavien ANDRE 899573c783
unity project added
3 years ago
..
Editor unity project added 3 years ago
.tests.json unity project added 3 years ago
Editor.meta unity project added 3 years ago
README.md unity project added 3 years ago
README.md.meta unity project added 3 years ago

README.md

Unity Source Control Tests

This project contains the tests for the window/UI of this collab client.

Overview

This is the structure of the project:

<root>
  ├── .tests.json
  └── Collaborate
      └── Editor/
          ├── Components/
          ├── Models/
          ├── Ppresenters/
          ├── Scenario/
          ├── UserInterface/
          ├── Views/
          └── Unity.CollabProxy.EditorTests.asmdef

Each directory features tests and mock classes for classes in the editor code.

Tests

To run the tests, use the Unity Test Runner from within the Unity Editor. Unity Test Runner documentation is here.

Adding a Test

While 100% coverage is hard to achieve, tests should be added with each new feature to ensure coverage either remains constant or increases.

With that out of the way, tests are in the typical C# format with a function with a [Test] decorator. Below is an example of a test taken from Editor/Models/ChangesModelTests.cs

[Test]
public void ChangesModel_NullSourceControlEntries_EmptyResultLists()
{
    var model = new TestableChangesModel();
    model.UpdateChangeList(new List<IChangeEntry>());

    var fullList = model.GetAllEntries();
    Assert.AreEqual(1, fullList.Count);
    Assert.IsTrue(fullList[0].All);

    Assert.AreEqual(0, model.GetToggledEntries().Count);
    Assert.AreEqual(0, model.GetUntoggledEntries().Count);

    Assert.AreEqual(0, model.ToggledCount);
}

For documentation on the testing library, look at the NUnit documentation over at GitHub. Unity Test Runner is a superset of NUnit and the documentation for that is here.

To access private/internal classes, creating a subclass and marking the parent fields as protected/internal will allow them to be used in testing.