我正在自动对我的Silverlight应用程序进行UI测试,并且我正在使用Visual Studio 2010。有些测试需要设置我的Oracle数据库。
我做过的事情:
1 - 一个setup.sql文件,我连接到我的数据库并对其执行操作。我将此文件作为项目的现有项目,并在TestSettings上添加为部署。
代码:
CONNECT USERNAME@DATABASE,
CREATE TABLE TABLE_NAME,
EXIT
2 - 我调用setup.sql文件的set.bat文件。我在TestSetings上的Setup and Cleanup选项卡上有了这个文件的路径。
代码:
sqlcmd -S MARIALISBOA -i setup.sql
3 - 我在TestClass上编写了一个TestInitilize方法。
代码:
[TestInitialize()]
public void Initialize()
{
System.Diagnostics.Process.Start("setup.bat");
}
4 - 我连接了我的数据库抛出Visual Studio(数据 - >添加新数据源)。
我在Visual Studio上运行测试但是没有在我的数据库上创建该类。
有人能帮帮我吗?我试图解决这个问题,因为星期一,我开始失去理智
答案 0 :(得分:1)
虽然它无法解决您的初始问题,但解决方案是使用类似的东西;
例如(请注意,这是SQL Server,使用OLE DB连接或类似);
internal static object FireSqlStatement(string sqlStatement)
{
object result = null;
using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings[connectionString].ConnectionString))
{
cn.Open();
var cmd = new SqlCommand
{
CommandText = sqlStatement,
CommandType = CommandType.Text,
Connection = cn
};
result = cmd.ExecuteScalar();
cmd.Dispose();
cn.Close();
}
return result;
}
我在测试中如何使用它的示例;
[Test]
public void GetUserTriggers()
{
//Insert Test Record
Helper.FireSqlStatement("INSERT INTO [Users].[Triggers] (Id) VALUES (1)");
var request = new GetTriggersRequest()
{
TriggerType = TriggerType.UserTrigger
};
var response = ServiceInvoker.Invoke<IReports,
GetTriggersRequest, GetTriggersResponse>(
"Reports",
request,
(proxy, req) => proxy.GetTriggers(req));
foreach (var t in response.Triggers)
{
Console.WriteLine(t.Id.ToString());
}
Assert.NotNull(response);
Assert.NotNull(response.Triggers);
Assert.Greater(response.Triggers.Count, 0);
}
在你的情况下,你可以打电话;
Helper.FireSqlStatement("TRUNCATE TABLE tableName");
有什么好处吗?