Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagec#
themeEmacs
linenumberstrue
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Akka.Actor;
using Akka.Event;

using ServiceA.STUDY;


namespace AkkaTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            using (ActorSystem actorSystem = ActorSystem.Create("ServiceA"))  //실제 서비스에서사용될 유사한 코드를 가지고 테스트
            {
                IActorRef myActor = actorSystem.ActorOf<BasicActor>("myactor");
                Props watchProps = WatchActor.Props(myActor);
                IActorRef watcher = actorSystem.ActorOf(watchProps, "watcher");
                var result = myActor.Ask("나는 살아있다.").Result;
                actorSystem.Stop(myActor); //myActor를 임의로 Stop하여, watcher가 종료를감시한는지 체크
                myActor.GracefulStop(TimeSpan.FromSeconds(10)).Wait();  //생성한 Actor를 안전하게 종료시킨다.
            }            
        }
    }
}

...

Code Block
languagec#
themeEmacs
linenumberstrue
using ServiceA.STUDY;

using Akka.TestKit.VsTest;

namespace AkkaTest
{
    [TestClass]
    public class UnitTest1 : TestKit //TestKit을 상속받습니다.
    {
        [TestMethod]
        public void TestMethod1()  //기본 유닛 테스트기
        {
            using (ActorSystem actorSystem = ActorSystem.Create("ServiceA"))
            {
                IActorRef myActor = actorSystem.ActorOf<BasicActor>("myactor");
                Props watchProps = WatchActor.Props(myActor);
                IActorRef watcher = actorSystem.ActorOf(watchProps, "watcher");
                var result = myActor.Ask("나는 살아있다.").Result;
                actorSystem.Stop(myActor); //myActor를 임의로 Stop하여, watcher가 종료를감시한는지 체크
                myActor.GracefulStop(TimeSpan.FromSeconds(10)).Wait();  //생성한 Actor를 안전하게 종료시킨다.
            }            
        }

        [TestMethod]
        public void TestMethod2()  //Akka Tookit을 이용한 유닛테스트, 테스트기에 테스트를 할수 있는 액터가 추가됨
        {
            //실제 서비스코드와는 다른 패턴이기때문에, 학습용으로는 적당하지 않습니다.
            var myActor = this.Sys.ActorOf<MyActor>("myActor");  //MyActor는 사용자의 메시지에 Re:+ 를 붙여 응답합니다.
            var probe = this.CreateTestProbe();
            myActor.Tell("Hello", this.TestActor);
            ExpectMsg("Re:Hello", TimeSpan.FromSeconds(1));            
        }

    }
}

...