Automation Testing Framework for AR(Unity) Applications.
Arium is an automation testing framework for 3D applications built on top of Unity. It helps the Developers/QA to run functional tests on 3D apps on any platforms. ie., Unity Editor,Android,UWP etc..
Arium comes with the basic Unity interactions:
- Animator
- DragHandler
- PointerClickHandler
- PointerEnterHandler
- PointerExitHandler
- RigidBody
© 2020 ThoughtWorks, Inc.
AGPL-3.0 License
Maintained by ThoughtWorks
- Neelarghya Mandal (Contributors)
- Jayachandran S (Contributors)
- Raju Kandaswamy (Reviewer)
- Kuldeep Singh (Reviewer)
Arium - An Automation framework for Unity/XR
- Download Arium Unity Package https://github.com/thoughtworks/Arium/releases
- Open your Unity project which needs to be automated.
- Double click on the downloaded Unity package.
- Select all and click on Import Button.
- Open UnitySampleScene in the project hierarchy - Samples >> AriumSample >> Scenes >> UnitySampleScene.
- Open Unity Build settings - File >> Build Settings
- Click on Add Open Scenes. Note: Make sure the UnitySampleScene is selected
- Close Unity build settings window
- Open TestRunner window in Unity - Window >> General >> TestRunner.
- Expand the Arium hierarchy in the Test Runner - Arium >> AriumSampleTests.dll >> Samples >> AriumSample >> UnityTestRunner
- Select PlayMode Tests and Right click on UnityTestRunner and Click on RUN.
- Test Cases will start executing and results will be displayed on the TestRunner.
To use Arium framework, Arium should be instantiated inside the test class as mentioned below
Arium _arium = new Arium();
To find a Gameobject from the Unity Scene hierarchy using its name.
_arium.FindGameObject("Display"); //To find "Display" gameobject but doesn't include inactive/deactive gameobjects in search.
_arium.FindGameObject("Display", true); //To find "Display" gameObject and include inactive/deactive gameobjects in search.
String - Name of the Gameobject.
bool - flag to include inactive/deactive GameObject in search (by default false).
UnityEngine.GameObject
To retrieve the components attached to a GameObject
_arium.GetComponent<Name of the component here>(Name of the GameObject here)
String - Name of the Gameobject.
UnityComponent - UnityComponent type
UnityEngine.Component
To interact with the UnityGameobjects on runtime.
To click on a particular gameobject.
_arium.PerformAction(new UnityPointerClick(), "Name of the gameobject here");
Interaction - Type of the interaction need to be performed on a gameobject, in this case it is UnityPointerClick()
String - Name of the Gameobject.
UnityEventSystemInteraction class is a static generic class which invoke functions on components based out of EventSystem Handled interfaces eg IPointerClickHandler in case of Unity UI Button Component. It containes 2 methods which can be called as follows:
UnityEventSystemInteraction<T>.PerformAction("GameObject Name");
UnityEventSystemInteraction<T>.PerformAction("GameObject Name", new PointerEventData(EventSystem.current));
T : Interface based on IEventSystemHandler eg IPointerClickHandler, IDragHandler, IPointerDownHandler
GameObject Name - Name of the GameObject on which action needs to be performed.
AbstractEventData - Abstract base class for input event data by Unity
UnityEventSystemInteraction<T>.PerformAction(GameObjectRef);
UnityEventSystemInteraction<T>.PerformAction(GameObjectRef, new PointerEventData(EventSystem.current));
T : Interface based on IEventSystemHandler eg IPointerClickHandler, IDragHandler, IPointerDownHandler
GameObject Name - Name of the GameObject on which action needs to be performed.
AbstractEventData - Abstract base class for input event data by Unity
//Call IPointerClick methods on components attached on GameObject
UnityEventSystemInteraction<IPointerClickHandler>.PerformAction("GameObject Name");
//Call IPointerClick methods on components attached on gameObjectRef
UnityEventSystemInteraction<IPointerClickHandler>.PerformAction(gameObjectRef);
//Call IDragHandler methods on the specified GameObject Reference passing Pointer Position in PointerEventData()
UnityEventSystemInteraction<IDragHandler>.PerformAction(gameObjectRef, new PointerEventData(EventSystem.current)
{
position = new Vector2(positionXOfDrag,positionYOfDrag),
});
To contribute to Arium, follow the steps contributor