C# 在JustMock中未找到TestFixtureSetUpAttribute?

C# 在JustMock中未找到TestFixtureSetUpAttribute?,c#,nunit,justmock,C#,Nunit,Justmock,我正在用C#、.NET Framework 4.7、Nunit 3.8.0和JustMock Lite 2017.2.821.1开发一个TDD测试 当我这样做时: IGenericRepository<ProductionOrder> _proOrdRepository = Mock.Create<IGenericRepository<ProductionOrder>>(); 有什么想法吗 更新: 我已经删除了方法SetUp

我正在用C#、.NET Framework 4.7、Nunit 3.8.0和JustMock Lite 2017.2.821.1开发一个TDD测试

当我这样做时:

IGenericRepository<ProductionOrder> _proOrdRepository = 
                Mock.Create<IGenericRepository<ProductionOrder>>();
有什么想法吗

更新

我已经删除了方法
SetUpLoadFinishedTrzlBatch
,并将方法
中的所有内容移动到应该存在的ProductionOrder
中,我得到了相同的错误

[Test]
public void ShouldExistsProductionOrder()
{
    LoadFinishedTrzlBatch sut;
    IGenericRepository<ProductionOrder> _proOrdRepository;

    _proOrdRepository =
        Mock.Create<IGenericRepository<ProductionOrder>>();
    var batchRepository =
        Mock.Create<IGenericRepository<Batch>>();
    var codeRepository =
        Mock.Create<IGenericRepository<Code>>();
    var aggRepository =
        Mock.Create<IGenericRepository<Aggregation>>();
    var aggChildrenRepository =
        Mock.Create<IGenericRepository<AggregationChildren>>();

    sut = new LoadFinishedTrzlBatch(
        _proOrdRepository,
        batchRepository,
        codeRepository,
        aggRepository,
        aggChildrenRepository);

    // Arrange
    var productionOrderName = "ProOrd";
    var orders = new List<ProductionOrder>() {
        new ProductionOrder { Name = productionOrderName },
        new ProductionOrder { Name = "Dummy for Filter" }
    };

    Mock.Arrange(() => _proOrdRepository
        .SearchFor(Arg.IsAny<Expression<Func<ProductionOrder, bool>>>()))
        .Returns((Expression<Func<ProductionOrder, bool>> expression) =>
            orders.Where(expression.Compile()).AsQueryable())
        .MustBeCalled();

    // Act
    var actual = sut.ExistsProductionOrder(productionOrderName);

    // Assert
    Assert.IsTrue(actual);
}
[测试]
public void应该存在ProductionOrder()
{
装载完成的DTRZL批次sut;
IGenericRepository\u proOrdRepository;
_proOrdRepository=
Mock.Create();
批处理存储库=
Mock.Create();
var代码库=
Mock.Create();
var aggRepository=
Mock.Create();
var-aggChildrenRepository=
Mock.Create();
sut=新的LoadFinishedTrzlBatch(
_proOrdRepository,
批处理存储库,
代码库,
阿格库,
AGG(儿童知识库);
//安排
var productionOrderName=“ProOrd”;
var orders=新列表(){
新ProductionOrder{Name=productionOrderName},
新产品订单{Name=“过滤器的虚拟”}
};
Mock.Arrange(()=>\u proOrdRepository
.SearchFor(Arg.IsAny())
.Returns((表达式)=>
orders.Where(expression.Compile()).AsQueryable())
.MustBeCalled();
//表演
var actual=sut.ExistsProductionOrder(productionOrderName);
//断言
断言.IsTrue(实际);
}
我认为问题出在JustMock中。

NUnit 3和NUnit 2的JustMock

这两个属性在NUnit 3.0中被弃用,在NUnit 3.8中刚刚被删除。JustMock应更新以使用其替换项,
OneTimeSetUp
onetimeeardown

作为用户-在解决此问题之前,您不能使用NUnit 3.7.1之后的版本。您可以向JustMock报告此问题


该问题已在JustMock 2018 R1发布后修复

为了进一步更新,JustMock(版本-2017.3.913.1)现在支持NUnit的3.7.1版本,但在3.8.x中仍然存在

如果您可以灵活地降级NUnit的版本,可以执行以下操作

1:在VS中,转到-Tools>NuGet Package Manager>Package Manager控制台


2:PM>安装软件包NUnit-Version[较低版本](只需在-Version之后按tab键即可获得所有支持的版本),您可以降级NUnit版本。

从异常消息中,它看起来像是NUnit问题,因为它说找不到
TestFixtureSetUpAttribute
TestFixtureTearDownAttribute
已经很晚了。现在我是usong Mock,它比JustMock更容易使用。谢谢
[TestFixture]
class LoadFinishedTrzlBatchTest
{
    private LoadFinishedTrzlBatch sut;
    private IGenericRepository<ProductionOrder> _proOrdRepository;

    [SetUp]
    public void SetUpLoadFinishedTrzlBatch()
    {
        _proOrdRepository = 
            Mock.Create<IGenericRepository<ProductionOrder>>();
        var batchRepository =
            Mock.Create<IGenericRepository<Batch>>();
        var codeRepository =
            Mock.Create<IGenericRepository<Code>>();
        var aggRepository =
            Mock.Create<IGenericRepository<Aggregation>>();
        var aggChildrenRepository =
            Mock.Create<IGenericRepository<AggregationChildren>>();

        sut = new LoadFinishedTrzlBatch(
            _proOrdRepository,
            batchRepository,
            codeRepository,
            aggRepository,
            aggChildrenRepository);
    }

    [TestCaseSource(nameof(ShouldThrowArgumentSource))]
    public void ShouldThrowArgumentExceptionWithInvalidProductionOrderName(string productionOrderName)
    {
        // Assert
        Assert.That(() => sut.ExistsProductionOrder(productionOrderName), Throws.TypeOf<ArgumentNullException>());
    }

    [Test]
    public void ShouldExistsProductionOrder()
    {

        // Arrange
        var productionOrderName = "ProOrd";
        var orders = new List<ProductionOrder>() {
            new ProductionOrder { Name = productionOrderName },
            new ProductionOrder { Name = "Dummy for Filter" }
        };

        Mock.Arrange(() => _proOrdRepository
            .SearchFor(Arg.IsAny<Expression<Func<ProductionOrder, bool>>>()))
            .Returns((Expression<Func<ProductionOrder, bool>> expression) =>
                orders.Where(expression.Compile()).AsQueryable())
            .MustBeCalled();

        // Act
        var actual = sut.ExistsProductionOrder(productionOrderName);

        // Assert
        Assert.IsTrue(actual);
    }

    private static IEnumerable ShouldThrowArgumentSource()
    {
        yield return string.Empty;
        yield return null;
        yield return " ";
    }
}
[Test]
public void ShouldExistsProductionOrder()
{
    LoadFinishedTrzlBatch sut;
    IGenericRepository<ProductionOrder> _proOrdRepository;

    _proOrdRepository =
        Mock.Create<IGenericRepository<ProductionOrder>>();
    var batchRepository =
        Mock.Create<IGenericRepository<Batch>>();
    var codeRepository =
        Mock.Create<IGenericRepository<Code>>();
    var aggRepository =
        Mock.Create<IGenericRepository<Aggregation>>();
    var aggChildrenRepository =
        Mock.Create<IGenericRepository<AggregationChildren>>();

    sut = new LoadFinishedTrzlBatch(
        _proOrdRepository,
        batchRepository,
        codeRepository,
        aggRepository,
        aggChildrenRepository);

    // Arrange
    var productionOrderName = "ProOrd";
    var orders = new List<ProductionOrder>() {
        new ProductionOrder { Name = productionOrderName },
        new ProductionOrder { Name = "Dummy for Filter" }
    };

    Mock.Arrange(() => _proOrdRepository
        .SearchFor(Arg.IsAny<Expression<Func<ProductionOrder, bool>>>()))
        .Returns((Expression<Func<ProductionOrder, bool>> expression) =>
            orders.Where(expression.Compile()).AsQueryable())
        .MustBeCalled();

    // Act
    var actual = sut.ExistsProductionOrder(productionOrderName);

    // Assert
    Assert.IsTrue(actual);
}