2015-10-08 2 views
1

Я пытаюсь реализовать абстрактный класс Xunit.Sdk.DataAttribute, но по какой-то причине он не работает.Участник не реализован с использованием Xunit.Sdk.DataAttribute abstract class

public sealed class CustomDataAttribute: Xunit.Sdk.DataAttribute 
{ 
    public override IEnumerable<object[]> GetData(MethodInfo testMethod) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Он говорит: Аннотация унаследовали член

'IEnumerable<object[]> Xunit.Sdk.DataAttribute.GetData(System.Reflection.MethodInfo)'

не реализован.

Тогда это четко реализовано.

Эта ошибка может быть воспроизведена только в одном проекте, в других проектах она работает нормально. Может быть, у вас была подобная ситуация?

ответ

1

Это, кажется, дефект в новой оснастки, она разрешима путем добавления ссылки времени сборки на System.Reflection и System.Runtime в frameworkAssemblies разделе вашего project.json так, что она выглядит следующим образом:

{ 
    "version": "1.0.0-*", 
    "dependencies": { 
    "YourAssemblyUnderTest": "1.0.0-*", 
    "xunit": "2.*" 
    }, 
    "frameworks": { 
    "net45": { 
     "frameworkAssemblies": { 
     "mscorlib": "", 
     "System": "", 
     "System.Core": "", 
     "System.Web": "", 
     "System.Reflection": { 
      "type": "build", 
      "version": "" 
     }, 
     "System.Runtime": { 
      "type": "build", 
      "version": "" 
     } 
     } 
    } 
    } 
} 

Вопрос отчитывается на xUnit Issue #618 и #716 с Акселем Хером, который пишет good post about it, хотя и на немецком языке. Подводя итог пост Акселя, извинения, если я неправильно переводил немецкий не мой первый язык:

Создание библиотеки DotNet Базовые основанные на PCL библиотеки не работает так гладко, как это было раньше DotNet ядро ​​было введено. В определенных обстоятельствах типов, которые включены в зависимости от зависимостей не доступны, что приводит к ошибкам компилятора, такие как:

  • MyDataAttribute не реализует унаследовали абстрактный член DataAttribute.GetData (MethodInfo)»
  • MyDataAttribute.GetData (MethodInfo) «: нет подходящего метода не найден для переопределения

ссылаясь System.Reflection и System.Runtime мы явно ссылкой этих зависимостей.