Code: Select all
[UnityTest]
public IEnumerator TestButtonClick()
{
bool clicked = false;
startButton.clicked += () =>
{
clicked = true;
Debug.Log("Button clicked!"); // Debug to check if the click event fires
};
startButton.SetEnabled(true);
startButton.style.display = DisplayStyle.Flex;
var pickingMode = startButton.pickingMode;
Debug.Log($"Button picking mode: {pickingMode}");
var displayStyle = startButton.resolvedStyle.display;
Debug.Log($"Button display style: {displayStyle}");
yield return null;
var root = startButton.hierarchy.parent;
if (root != null)
{
Debug.Log($"Button's parent is: {root}");
}
else
{
Debug.LogError("The button has no parent in the hierarchy.");
}
Debug.Log($"Button is interactable: {startButton.enabledSelf}");
// Simulate PointerDownEvent
using (var pointerDownEvent = new PointerDownEvent())
{
pointerDownEvent.target = startButton; // Ensure the event is targeted to the correct button
startButton.SendEvent(pointerDownEvent);
// Log to check if the event was received
Debug.Log($"PointerDownEvent target: {pointerDownEvent.target}");
Assert.IsFalse(pointerDownEvent.isPropagationStopped, "PointerDownEvent propagation was stopped unexpectedly.");
}
yield return new WaitForSeconds(0.1f); // Small delay between down and up event
// Simulate PointerUpEvent
using (var pointerUpEvent = new PointerUpEvent())
{
pointerUpEvent.target = startButton; // Ensure the event is targeted to the correct button
startButton.SendEvent(pointerUpEvent);
// Log to check if the event was received
Debug.Log($"PointerUpEvent target: {pointerUpEvent.target}");
Assert.IsFalse(pointerUpEvent.isPropagationStopped, "PointerUpEvent propagation was stopped unexpectedly.");
}
yield return null;
// Assert that the button click event was triggered
if (!clicked)
{
Debug.LogError("The button click event was not triggered.");
}
// Assert that the button click event was triggered
Assert.IsTrue(clicked, "The button click event was not triggered.");
}
Code: Select all
TestButtonClick (0.201s)
---
Unhandled log message: '[Error] The button click event was not triggered.'. Use UnityEngine.TestTools.LogAssert.Expect
---
UI_tests/d__6:MoveNext () (at Assets/Tests/UI_tests.cs:121)
UnityEngine.SetupCoroutine:InvokeMoveNext (System.Collections.IEnumerator,intptr)
---
Button picking mode: Position
Button display style: Flex
Button's parent is: VisualElement Buttons (x:0.00, y:0.00, width:NaN, height:NaN) world rect: (x:0.00, y:0.00, width:NaN, height:NaN)
Button is interactable: True
PointerDownEvent target: Button Play (x:0.00, y:0.00, width:NaN, height:NaN) world rect: (x:0.00, y:0.00, width:NaN, height:NaN)
PointerUpEvent target: Button Play (x:0.00, y:0.00, width:NaN, height:NaN) world rect: (x:0.00, y:0.00, width:NaN, height:NaN)
The button click event was not triggered.
Code: Select all
Wenn ich zusammen mit einer Taste ein Uidokument erstelle, kann ich überprüfen, ob ich geklickt habe. Wenn ich jedoch versuchte, mein VisualTree -Element zu laden, erscheint es, als mein UI nicht geladen wird. benutzerdefinierte Menü.uxml. Ich verstehe nicht, warum mein testclick2 () einwandfrei funktioniert, aber mein testclick3 () fällt PlayMode -Tests nicht. < /P>
Code: Select all
[UnityTest]
public IEnumerator TestClick2()
{
bool wasClicked = false;
Button btn = new Button { name = "foobar" };
btn.RegisterCallback(_ => wasClicked = true);
GameObject hostGameObject = new GameObject();
UIDocument uiDoc = hostGameObject.AddComponent();
uiDoc.panelSettings = ScriptableObject.CreateInstance();
uiDoc.rootVisualElement.Add(btn);
yield return null;
using (ClickEvent clkEvt = ClickEvent.GetPooled())
{
clkEvt.target = btn;
btn.SendEvent(clkEvt);
}
Assert.IsTrue(wasClicked);
}
[UnityTest]
public IEnumerator TestClick3()
{
var uiDocument = new GameObject().AddComponent();
// Load your specific UXML file
var visualTree = Resources.Load("Menu");
if (visualTree != null)
{
uiDocument.
visualTreeAsset = visualTree;
}
if (visualTree == null)
{
Debug.LogError("Visual Tree is null. Could nor load from resources");
}
yield return null;
root = uiDocument.rootVisualElement;
yield return null;
startButton = root.Q("Play");
if (startButton == null)
{
Debug.LogError("Play button was not found.");
}
Debug.Log("startButton is: " + startButton);
Assert.NotNull(startButton, "start button null");
bool wasClicked = false;
startButton.SetEnabled(true);
startButton.style.display = DisplayStyle.Flex;
startButton.RegisterCallback(_ => wasClicked = true);
yield return null;
using (ClickEvent clkEvt = ClickEvent.GetPooled())
{
clkEvt.target = startButton;
startButton.SendEvent(clkEvt);
}
Assert.IsTrue(wasClicked);
}