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.
 
 
Josh 0c950004ab beat-emup template + dorothy 2 years ago
..
Editor beat-emup template + dorothy 2 years ago
.tests.json beat-emup template + dorothy 2 years ago
Editor.meta beat-emup template + dorothy 2 years ago
README.md beat-emup template + dorothy 2 years ago
README.md.meta beat-emup template + dorothy 2 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.