NUnit dnx – BlackJumboDog CoreCLR

こんにちは!前回は、xUnitどうだろうか?ということで検討していましたが、そもそもNUnitがdnxに対応してました!

NUnit 3.0.0 Release Candidate – November 1, 2015

Framework

  • The portable build now supports ASP.NET 5 and the new Core CLR.NOTE: The nunit3-console runner cannot run tests that reference the portable build. You may run such tests using NUnitLite or a platform-specific runner.

ので、移植をメインとして挑んでいくことにします!(早くデプロイしたいという気持ちが抑えられないわけではないと自分に言い聞かせる)また、注意事項が、Upgradingに書いてありました。

For example, NUnit 3.0 no longer supports ExpectedExceptionAttribute. However, preferred alternatives Assert.Throws and the ThrowsConstraint have been available for several years. If you remove the attribute from your tests and use one of the alternatives instead, you can verify that they work in your present environment and they will continue to work after conversion.

ExpectedExceptionAttributeはサポートされなくなったようです。代替として、Assert.ThrowsNUnit.Framework.Constraints.ThrowsConstraintがあるとのこと。うーん。属性によるサポートはなくなったよーみたいなことかなぁ。Exceptionの挙動は、UIスレッド(クラシックWindowsFormなApplicationException)とかAppDomain(UnhandledExceptionあたり)も絡むので、CoreCLRAppDomainの概念はそもそもないと宣言されてる。System.Windows.Formsは存在しない。どちらもないと思われる。)だとつらいとか、実は制約多いからなんかわからなくもない。VSCodeにも.Net Coreにも対応していくなら当然な流れともいえる気がします。というわけで、そのあたりも置き換えていきます!


NuGet!


置き換え!

        //[ExpectedException(typeof(ValidObjException))]
        public void 無効な文字列による初期化の例外テスト(string aclStr) {
            //exercise
            //new AclV4("TAG", aclStr);
            NUnit.Framework.Assert.Throws<ValidObjException>(() => new AclV4("TAG", aclStr));
        }

あとは、勢い!大事大事

 


テストの実行(NUnitLite-Runner

https://github.com/nunit/nunit/wiki/NUnitLite-Runner

ということで、NUnitLiteというものをNuGetからパッケージ追加して、Mainを作ってくれよーっていうことみたいです。

ところが…

思わぬアクシデントに遭遇。どうも、サンプル通りのシグネチャは定義されてないとか。いろいろ試行錯誤しましたが、結果的にはIssuesがありました。そこの通りにしてみてこんな感じ。


いざ、テスト開始!!

あああ!

まぁ、初見です。こんなもんですよね。文字化けを直す方法は明日載せますね。テストとしては、おおむね通っていますが、542件中、72+55程度通ってないものがあるようです。ただなんにせよ、テストの流用は成功したんじゃないかと!!

それでは!