【C#】MoqのQuickstartをやってみる
参考
https://github.com/Moq/moq4/wiki/Quickstart
Methods
まずはこの辺のメソッドを押さえておけばいいのかな。
- Returns
- Throws
- Callback
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; namespace MoqQuickStart { [TestClass] public class Methods { [TestMethod] public void Practice() { var mock = new Mock<IFoo>(); mock.Setup(foo => foo.DoSomething("ping")).Returns(true); var f = mock.Object; Assert.IsFalse(f.DoSomething("pong")); Assert.IsTrue(f.DoSomething("ping")); } [TestMethod] public void Out_argument() { var outString = "ack"; var mock = new Mock<IFoo>(); mock.Setup(foo => foo.TryParse("ping", out outString)).Returns(true); var f = mock.Object; Assert.IsFalse(f.TryParse("pong", out outString)); Assert.IsTrue(f.TryParse("ping", out outString)); } [TestMethod] public void Ref_argument() { var instance = new Bar(); var mock = new Mock<IFoo>(); mock.Setup(foo => foo.Submit(ref instance)).Returns(true); var f = mock.Object; Assert.IsTrue(f.Submit(ref instance)); } [TestMethod] public void Access_invocation_arguments_when_returning_a_value() { var mock = new Mock<IFoo>(); mock.Setup(x => x.DoSomethingStringy(It.IsAny<string>())) .Returns((string s) => s.ToLower()); var f = mock.Object; var actual = f.DoSomethingStringy("HOGE"); Assert.AreEqual("hoge", actual); } [TestMethod] [ExpectedException(typeof(InvalidOperationException))] public void Throwing_when_invoked_with_specific_parameters_1() { var mock = new Mock<IFoo>(); mock.Setup(foo => foo.DoSomething("reset")).Throws<InvalidOperationException>(); mock.Object.DoSomething("reset"); Assert.Fail(); } [TestMethod] public void Throwing_when_invoked_with_specific_parameters_2() { var mock = new Mock<IFoo>(); mock.Setup(foo => foo.DoSomething("")).Throws(new ArgumentException("command")); try { mock.Object.DoSomething(""); Assert.Fail(); } catch (ArgumentException ex) { Assert.AreEqual("command",ex.Message); } } [TestMethod] public void Lazy_evaluating_return_value() { var count = 1; var mock = new Mock<IFoo>(); mock.Setup(foo => foo.GetCount()).Returns(() => count); var actual = mock.Object.GetCount(); Assert.AreEqual(1, actual); } [TestMethod] public void Returning_different_values_on_each_invocation() { var mock = new Mock<IFoo>(); var calls = 0; mock.Setup(foo => foo.GetCount()) .Returns(() => calls) .Callback(() => calls++); Console.WriteLine(mock.Object.GetCount()); Assert.AreEqual(1, calls); Console.WriteLine(mock.Object.GetCount()); Assert.AreEqual(2, calls); } } }
Jenkins で OutOfMemoryError : Java heap space
概要
ある日ジョブがコケてコンソールのログを見たらこのエラーが出てました。Jenkins使ってるとよくあることなのでしょうか。ヒープメモリが足りないのでjenkis.xmlの設定値を変更します。
環境
- Windos 10
- Jenkins 2.46.3
jenkins.xml
デフォルトでインストールしてるとJENKINS_HOME直下にあるっぽいです。私はCドライブにインストールしたのでC:\Jenkins
にありました。
-Xmxには256m(メガバイト)と指定されています。この値を変更して最大のヒープサイズを増やしてみましょう。
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
環境によりますが、ひとまず1024mくらいを設定してみたところOutOfMemoryErrorは出なくなったので様子を見てみることに。3週間程度経過してますが、今のところ元気に動いています。
参考
Builds failing with OutOfMemoryErrors - Jenkins - Jenkins Wiki
[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
- 作者: 佐藤聖規,和田貴久,新井雄介,米沢弘樹,山岸啓,岩成祐樹,川口耕介
- 出版社/メーカー: 技術評論社
- 発売日: 2017/05/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る