DataDriven Test mit C++/CLI
-
Hallo Allerseits,
wahrscheinlich ein schlechter Einstieg ins Forum weil alle die Hände überm Kopf zusammenschlagen und sagen: Na das weiß doch jeder... aber egal
Habe ein recht seltsames Problem einen Data Driven Test zu bewerkstelligen unter C++/CLI.
Ich nutze die Visual Studio 2005 Team Edition for Testers. Es existiert eine Config-Datei die auf ein Excel-Sheet verweist. Ich will lediglich über den TestContext die Daten aus dem File ziehen (über DataRow). Kennt sich hier jemand damit aus? Ich habe aufgrund einer anderen Suche folgendes versucht, geht aber nicht:
*[cpp]
...
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;
using namespace System::Runtime::InteropServices;namespace LFTest
{[TestClass]
public ref class LFData_Test
{
#pragma
**private: TestContext^ testContextInstance;
public: property Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ TestContext{ Microsoft::VisualStudio::TestTools:UnitTesting::TestContext^ get()
{ return testContextInstance^; } System::Void set (Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ value)
{ testContextInstance = value; }
};**
...
[TestMethod]
[DeploymentItem("TestAdmin//lftest_admin.xls")]
[DataSource("MyExcelDataSource")]void LDFData_Test::setGetLSpeed(){
...
doComparsion(currentMethod, testResult);
...}
...
void doComparsion(String^ currentMethod, String^ result){
String^ input = currentMethod + "_In";
String^ expected = currentMethod + "_Exp";String^ values = "Result: " + (String^)result + " - Expected: " + (String^)testContextInstance->DataRow[expected];
}
...[/cpp]*Hat jemand ne Idee?
Grunsätzlich geht es dabei um einen DataDriven Unit-Test unter Verwendung von IJW. :p
-
Hi Nochmal,
hier ein paar Ergänzungen.
Hier das Beispiel das ich versucht habe umzusetzen:
http://gps678.com/25/3234d148ee4c8a65.htmlUnd hier das Ganze in C#, da hatte es funktioniert (von http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.testcontext.datarow.aspx):
C# Copy Code using Microsoft.VisualStudio.TestTools.UnitTesting; using BankAccountNS; using System; namespace TestProject1 { [TestClass()] public class BankAccountTest { private TestContext testContextInstance; public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } [TestMethod()] [DataSource("System.Data.OleDb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"D:\\sample.mdb\"", "Table1", DataAccessMethod.Sequential)] public void DebitTest() { string customerName = testContextInstance.DataRow["Name"].ToString(); double balance = Convert.ToDouble(testContextInstance.DataRow["Balance"]); double amount = Convert.ToDouble(testContextInstance.DataRow["Amount"]); double newBalance = balance - amount; BankAccount target = new BankAccount(customerName, balance); target.Debit(amount); Assert.AreEqual(newBalance, target.Balance, .00); } } }
Also was ist der entsprechende Code des C#-Besipiels in C++/CLI um das genau so umzusetzen?
-
Noch eine kleine Erweiterung:
Der Aufruf der Methoden soll dann über IJW erfolgen, der AUfruf gestaltet sich aber schwierig da man ja lles marshalln muss, oder?Wie sähe das für zB folgende Mehtode aus (die Mehtode ist natives C++)?
...
void CLGlobal::SetLSpeed(const CLReal& _value) {
m_LSpeed = _value;
}
...