小编Pio*_*ski的帖子

詹金斯失败的单元CanExecute测试方法不确定

我们对项目中的各种命令进行了很多CanExecute测试。当我们使用Visual Studio测试或AxoCover时,所有测试均正确通过。

我们尝试在执行“ CanExecute”之前添加一些先前的对象初始化,有时它可以工作(或者我们认为如此)。

testedViewModel.Object.InEditMode = inEditMode;
Run Code Online (Sandbox Code Playgroud)

我有一个测试:

[TestCase(true, true, TestName = "Command_InEditMode_CanExecute")]
[TestCase(false, false, TestName = "Command_NotInEditMode_CannotExecute")]
public void CommandCanExecute(bool inEditMode, bool expectedResult)
{
    var testedViewModel =
        new Mock<SomeViewModel>(inEditMode)
        {
            CallBase = true
        };

    testedViewModel.Setup(x => x.InEditMode).Returns(inEditMode);

    Assert.AreEqual(expectedResult, testedViewModel.Object.Command.CanExecute(null));
}
Run Code Online (Sandbox Code Playgroud)

有时(并非总是)当詹金斯进行构建和运行单元测试时,一些可以执行的测试失败并显示以下消息:

MESSAGE:
  Expected: True
  But was:  False

+++++++++++++++++++  
STACK TRACE:
   at Project.CommandCanExecute(Boolean inEditMode, Boolean expectedResult)
Run Code Online (Sandbox Code Playgroud)

问题在于仅在詹金斯身上才发生,并且它是不确定的。

编辑:

好的,还要考虑一件事。属性InEditMode放置在SomeModelView的基础父类中。

我在示例中为您合并了代码。

public BaseViewModel 
{
    public virtual bool InEditMode {get; set;}
}

public SomeViewModel : BaseViewModel
{
    public SomeViewModel () : base …
Run Code Online (Sandbox Code Playgroud)

c# wpf moq canexecute jenkins

13
推荐指数
1
解决办法
251
查看次数

标签 统计

c# ×1

canexecute ×1

jenkins ×1

moq ×1

wpf ×1