今日やったこと
ワーキングメモリートレーニング
瞑想
勉強
ゲーム開発
PlayerPresenterの作成
using UnityEngine; using Zenject; using Domain.UseCase; namespace Presentation.Presenter { public class PlayerPresenter : IPlayerPresenter{ private IPlayerView playerView; public Transform Tr => playerView.Tr; [Inject] IFactory<IPlayerView> playerViewFactory; public IPlayerView CreatePlayer(){ playerView = playerViewFactory.Create(); return playerView; } public void UpdatePlayerPosition(Vector3 pos){ playerView.UpdatePosition(pos); } } }
IPlayerView インターフェース
using UnityEngine; namespace Presentation.Presenter { public interface IPlayerView { Transform Tr{get;} void UpdatePosition(Vector3 pos); } }
これの単体テストはこんな感じ。
using System.Collections; using System.Collections.Generic; using NUnit.Framework; using UnityEngine; using UnityEngine.TestTools; using Zenject; using Presentation.Presenter; using Presentation.View; using Domain.UseCase; namespace Tests { public class PlayerPresenterTest : ZenjectUnitTestFixture { [SetUp] public void SetUp() { Container .Bind<IPlayerPresenter>() .To<PlayerPresenter>() .AsCached(); Container .BindIFactory<IPlayerView>() .To<PlayerView>() .FromNewComponentOnNewGameObject(); Container .Bind<IPlayerView>() .To<PlayerView>() .AsTransient(); } // A Test behaves as an ordinary method [Test] public void PlayerPresenterTestSimplePasses() { var playerPresenter = Container.Resolve<IPlayerPresenter>(); Assert.IsNotNull(playerPresenter); var playerView = playerPresenter.CreatePlayer(); Assert.IsNotNull(playerView); Assert.AreEqual(new Vector3(0, 1, 0), playerPresenter.Tr.position); Assert.AreEqual(new Vector3(0, 1, 0), playerView.Tr.position); playerPresenter.UpdatePlayerPosition(new Vector3(1, 1, 0)); Assert.AreEqual(new Vector3(1, 1, 0), playerPresenter.Tr.position); Assert.AreEqual(new Vector3(1, 1, 0), playerView.Tr.position); playerPresenter.UpdatePlayerPosition(new Vector3(2, 1, 2)); Assert.AreEqual(new Vector3(2, 1, 2), playerPresenter.Tr.position); } } }
何とかテストを書いてるつもりだが、これでいいのだろうか...
PlayerEntityの作成
今回はPlayerは何の状態も持たないので空白にした
using UnityEngine; using Zenject; using UniRx; public class PlayerEntity : IPlayerEntity { }
using UnityEngine; using UniRx; public interface IPlayerEntity { }
JINS MEME ESの測定結果
作業時間 9h21m
集中時間 3h7m
集中率 33%