テストメソッドを属性で飾りたい。この属性は、属性付きメソッドに関してどのテストが以前と見なされるかを認識している必要があります。次に例を示します。
private void DestinationChoiceViewLoaded_AllTpmFeaturesAreEnabled_UIElementsAreSetUpProperly() {
var vut = new DestinationChoiceViewUIWrapper();
UIControlAssert.Clickable(vut.GetNextPageButton());
UIControlAssert.Clickable(vut.GetPreviousPageButton());
}
[PreviousTestInOrder()]
public void Run_DestinationChoiceView_Tests() {
var vut = new DestinationChoiceViewUIWrapper();
UIControlAssert.Clickable(vut.GetNextPageButton());
UIControlAssert.Clickable(vut.GetPreviousPageButton());
}
どういうわけか、DestinationChoiceViewLoaded_AllTpmFeaturesAreEnabled_UIElementsAreSetUpProperly を属性コンストラクターに渡したいと思います。
私は試した:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class PreviousTestInOrderAttribute : Attribute
{
public string MethodName { get; private set; }
public PreviousTestInOrderAttribute(Expression<Action> memberExpression) {
MethodName = GetMemberName(memberExpression);
}
public static string GetMemberName(Expression<Action> memberExpression) {
MemberExpression expressionBody = (MemberExpression) memberExpression.Body;
return expressionBody.Member.Name;
}
}
でももしそうなら
[PreviousTestInOrder(() => DestinationChoiceViewLoaded_AllTpmFeaturesAreEnabled_UIElementsAreSetUpProperly)]
コンパイルされません:(