Commit 6db9da5
Fix play mode test issues and refactor test code (#551)
* Fix play mode test scene jumping issue
This commit fixes an issue where play mode tests would jump to the init scene but not run any tests.
Changes:
- Wrap TestRunnerCallbacks.IsRunningTests check with #if UNITY_INCLUDE_TESTS in ChangeScene.cs
This ensures the test runner check is only performed when test framework is available
- Add test assembly reference to JEngine.Core.Editor.asmdef (GUID:0acc523941302664db1f4e527237feb3)
- Update .gitignore to exclude Claude-generated files
The root cause was that ChangeScene.cs was trying to check TestRunnerCallbacks.IsRunningTests
without verifying the test framework was available, which could cause the check to fail or
not work properly during play mode tests.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Improve play mode test detection by preventing RuntimeInitializeOnLoadMethod registration
The previous fix checked TestRunnerCallbacks.IsRunningTests at runtime, but there was a
timing issue - RuntimeInitializeOnLoadMethod executes before TestRunnerCallbacks.RunStarted
is called, so the flag was not set yet.
This commit uses the cleaner approach recommended by Unity: prevent the method from being
registered at all during tests by applying #if !UNITY_INCLUDE_TESTS to the attribute itself.
This eliminates the runtime check and TestRunnerCallbacks dependency entirely from
ChangeScene.cs, making the code simpler and more reliable.
References:
- Unity Discussions: RuntimeInitializeOnLoadMethod runs during playmode unit tests
https://discussions.unity.com/t/methods-with-runtimeinitializeonloadmethod-attribute-run-during-playmode-unit-tests/949876
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Detect play mode tests by checking scene name instead of timing-dependent callbacks
The previous approaches had timing issues - TestRunnerCallbacks.RunStarted is called
after RuntimeInitializeOnLoadMethod, and #if !UNITY_INCLUDE_TESTS doesn't work because
the assembly always has UNITY_INCLUDE_TESTS defined (it contains test files).
This commit uses a simple, reliable approach: Unity Test Framework creates temporary
scenes with names like "InitTestScene<timestamp>" when running play mode tests. By
checking if the current scene name starts with "InitTestScene", we can reliably detect
test runs at runtime without timing dependencies.
Benefits:
- No timing issues with callbacks
- No dependency on preprocessor directives
- Works in all scenarios (GUI test runner, command line, etc.)
- Simple and maintainable
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Add Unity Test Framework temporary test scenes to .gitignore
Unity Test Framework creates temporary scenes like InitTestScene<timestamp>.unity
when running play mode tests. These should not be committed to the repository.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Refactor test code to use simplified lambda expressions and improve code clarity
- Simplified lambda expressions by removing explicit parameter types
- Added missing using statements for System.Collections.Generic and System.Reflection
- Removed redundant System namespace prefixes
- Changed DelayFrame(1) to DelayFrame() for default behavior
- Minor code cleanup for better readability
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>1 parent f85eaa7 commit 6db9da5
2 files changed
Lines changed: 46 additions & 42 deletions
File tree
- UnityProject/Packages/com.jasonxudeveloper.jengine.util/Tests
- Editor
- Runtime
Lines changed: 31 additions & 29 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
| 5 | + | |
4 | 6 | | |
5 | 7 | | |
6 | 8 | | |
| |||
92 | 94 | | |
93 | 95 | | |
94 | 96 | | |
95 | | - | |
| 97 | + | |
96 | 98 | | |
97 | 99 | | |
98 | 100 | | |
| |||
105 | 107 | | |
106 | 108 | | |
107 | 109 | | |
108 | | - | |
| 110 | + | |
109 | 111 | | |
110 | 112 | | |
111 | 113 | | |
| |||
129 | 131 | | |
130 | 132 | | |
131 | 133 | | |
132 | | - | |
| 134 | + | |
133 | 135 | | |
134 | 136 | | |
135 | 137 | | |
| |||
156 | 158 | | |
157 | 159 | | |
158 | 160 | | |
159 | | - | |
160 | | - | |
| 161 | + | |
| 162 | + | |
161 | 163 | | |
162 | 164 | | |
163 | 165 | | |
| |||
173 | 175 | | |
174 | 176 | | |
175 | 177 | | |
176 | | - | |
| 178 | + | |
177 | 179 | | |
178 | 180 | | |
179 | 181 | | |
180 | | - | |
181 | | - | |
| 182 | + | |
| 183 | + | |
182 | 184 | | |
183 | 185 | | |
184 | 186 | | |
| |||
293 | 295 | | |
294 | 296 | | |
295 | 297 | | |
296 | | - | |
| 298 | + | |
297 | 299 | | |
298 | 300 | | |
299 | 301 | | |
| |||
305 | 307 | | |
306 | 308 | | |
307 | 309 | | |
308 | | - | |
| 310 | + | |
309 | 311 | | |
310 | 312 | | |
311 | 313 | | |
| |||
317 | 319 | | |
318 | 320 | | |
319 | 321 | | |
320 | | - | |
| 322 | + | |
321 | 323 | | |
322 | 324 | | |
323 | 325 | | |
| |||
349 | 351 | | |
350 | 352 | | |
351 | 353 | | |
352 | | - | |
353 | | - | |
| 354 | + | |
| 355 | + | |
354 | 356 | | |
355 | 357 | | |
356 | 358 | | |
| |||
378 | 380 | | |
379 | 381 | | |
380 | 382 | | |
381 | | - | |
| 383 | + | |
382 | 384 | | |
383 | 385 | | |
384 | 386 | | |
| |||
402 | 404 | | |
403 | 405 | | |
404 | 406 | | |
405 | | - | |
406 | | - | |
407 | | - | |
408 | | - | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
409 | 411 | | |
410 | 412 | | |
411 | 413 | | |
| |||
414 | 416 | | |
415 | 417 | | |
416 | 418 | | |
417 | | - | |
| 419 | + | |
418 | 420 | | |
419 | 421 | | |
420 | 422 | | |
421 | 423 | | |
422 | | - | |
| 424 | + | |
423 | 425 | | |
424 | | - | |
425 | | - | |
| 426 | + | |
| 427 | + | |
426 | 428 | | |
427 | 429 | | |
428 | 430 | | |
| |||
437 | 439 | | |
438 | 440 | | |
439 | 441 | | |
440 | | - | |
| 442 | + | |
441 | 443 | | |
442 | 444 | | |
443 | 445 | | |
| |||
457 | 459 | | |
458 | 460 | | |
459 | 461 | | |
460 | | - | |
| 462 | + | |
461 | 463 | | |
462 | 464 | | |
463 | 465 | | |
| |||
476 | 478 | | |
477 | 479 | | |
478 | 480 | | |
479 | | - | |
| 481 | + | |
480 | 482 | | |
481 | 483 | | |
482 | 484 | | |
| |||
496 | 498 | | |
497 | 499 | | |
498 | 500 | | |
499 | | - | |
500 | | - | |
| 501 | + | |
| 502 | + | |
501 | 503 | | |
502 | 504 | | |
503 | 505 | | |
| |||
513 | 515 | | |
514 | 516 | | |
515 | 517 | | |
516 | | - | |
517 | | - | |
| 518 | + | |
| 519 | + | |
518 | 520 | | |
519 | 521 | | |
520 | 522 | | |
| |||
Lines changed: 15 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
7 | 9 | | |
| |||
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
30 | | - | |
| 32 | + | |
31 | 33 | | |
32 | 34 | | |
33 | 35 | | |
| |||
192 | 194 | | |
193 | 195 | | |
194 | 196 | | |
195 | | - | |
| 197 | + | |
196 | 198 | | |
197 | 199 | | |
198 | 200 | | |
| |||
277 | 279 | | |
278 | 280 | | |
279 | 281 | | |
280 | | - | |
| 282 | + | |
281 | 283 | | |
282 | 284 | | |
283 | 285 | | |
| |||
300 | 302 | | |
301 | 303 | | |
302 | 304 | | |
303 | | - | |
304 | | - | |
| 305 | + | |
| 306 | + | |
305 | 307 | | |
306 | 308 | | |
307 | 309 | | |
| |||
318 | 320 | | |
319 | 321 | | |
320 | 322 | | |
321 | | - | |
| 323 | + | |
322 | 324 | | |
323 | 325 | | |
324 | 326 | | |
325 | 327 | | |
326 | 328 | | |
327 | | - | |
| 329 | + | |
328 | 330 | | |
329 | 331 | | |
330 | 332 | | |
| |||
345 | 347 | | |
346 | 348 | | |
347 | 349 | | |
348 | | - | |
| 350 | + | |
349 | 351 | | |
350 | 352 | | |
351 | 353 | | |
352 | 354 | | |
353 | 355 | | |
354 | 356 | | |
355 | | - | |
356 | | - | |
357 | | - | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
358 | 360 | | |
359 | | - | |
| 361 | + | |
360 | 362 | | |
361 | 363 | | |
362 | 364 | | |
| |||
384 | 386 | | |
385 | 387 | | |
386 | 388 | | |
387 | | - | |
| 389 | + | |
388 | 390 | | |
389 | 391 | | |
390 | 392 | | |
| |||
0 commit comments