Ich entwickle ein Komponententestprojekt, bei dem ich ein Element in einem Test erstelle und dann im folgenden Test Unterelemente dafür erstelle.Mit der Ausgabe eines [ValueSourceAttribute] -Nunit-Tests im folgenden Test
Bei diesen Tests handelt es sich um parametrisierte Tests, und diese Parameter werden in der Laufzeitumgebung erfasst, sodass sie beim Start des Projekts gestartet werden. Es kann das übergeordnete Element nicht aus der Datenbank abrufen, da sie noch nicht erstellt wurden, "da ich den ersten Test noch nicht ausgeführt habe".
Gibt es einen Workaround dafür?
Die erste Funktion:
[Test, Sequential]
public void AddInitiative([ValueSourceAttribute("Get_AddInitiatives_Data_FromExcel")]AddInitiative Initiative_Object)
{
string URL = "http://" + Server_name + Port_number + "/IntegrationHub/IntegrationHub.svc/RestUnsecure/AddInitiative";
string Token = Get_Security_token("gpmdev\\administrator", "Xyz7890", TenantID_Input);
var Response = POST_Request(Initiative_Object, URL, Token);
Guid Returned_GUID = GenericSerializer<Guid>.DeserializeFromJSON(Response);
DataBase_Queries DB = new DataBase_Queries();
List<StrategyItem> StrategyItemsFromDB=DB.GetStrategyItemByID(Returned_GUID.ToString());
Assert.AreEqual(Initiative_Object.Initiative.Name_En, StrategyItemsFromDB[0].Name_En);
}
Die zweite Funktion, die fehlschlägt:
[Test, Sequential]
public void AddInitiativeMilestones([ValueSourceAttribute("Get_AddInitiativeMilestones_Data_FromExcel")]AddMilestone Milestone_Object)
{
string URL = "http://" + Server_name + Port_number + "/IntegrationHub/IntegrationHub.svc/RestUnsecure/AddInitiativeMilestones";
string Token = Get_Security_token("gpmdev\\administrator", "Xyz7890", TenantID_Input);
var Response = POST_Request(Milestone_Object, URL, Token);
List<Milestone> Returned_Milestone = GenericSerializer<List<Milestone>>.DeserializeFromJSON(Response);
DataBase_Queries DB = new DataBase_Queries();
List<StrategyItem> StrategyItemsFromDB = DB.GetStrategyItemByID(Returned_Milestone[0].ID.ToString());
Assert.AreEqual(Milestone_Object.Milestones[0].Name_En, Returned_Milestone[0].Name_En);
Assert.AreEqual(Milestone_Object.Milestones[0].Name_En,StrategyItemsFromDB[0].Name_En);
}
Update: Wenn ich von der GUI auf Löschen geklickt fixture wurden die Testdaten neu geladen, aber gibt es da einen Weg, das ohne GUI zu machen?