我正在创建一个小型Web应用程序,它将位于更大的CMS系统中。此应用程序的目的是验证由应用程序的其他部分上载和使用的电子表格。
我在开发过程中编写了一些测试来验证工作表,并计划将测试重用为验证器。我可以从代码运行测试,但我无法找到将上传的电子表格的位置传递给单元测试的方法。
以下是代码:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
{
if(SpreadsheetFile.HasFile)
{
string newFileName = Guid.NewGuid() + ".xlsm";
string path = Server.MapPath("~/App_Data/" + newFileName);
//TODO: how do I pass this in?
SpreadsheetFile.PostedFile.SaveAs(path);
CoreExtensions.Host.InitializeService();
TestPackage testPackage = new TestPackage("Test");
testPackage.Assemblies.Add(Server.MapPath("~/bin/Redacted.Tests.dll"));
//testPackage.Settings["spreadsheet"] = path;
TestSuiteBuilder builder = new TestSuiteBuilder();
TestFilter filter = new NameFilter( new TestName() { Name = "RedactedTests" } );
TestSuite suite = builder.Build(testPackage);
TestResult testResult = suite.Run( new NullListener(), filter );
rptResults.DataSource = testResult.Results;
rptResults.DataBind();
if (testResult.IsSuccess)
{
ResultPlaceHolder.Text = "<span class=\"success\">Upload succeeded and all tests passed.</span>";
}
else
{
ResultPlaceHolder.Text = "<span class=\"fail\">Upload succeeded but tests failed.</span>";
}
}
else
{
ResultPlaceHolder.Text = "<span class=\"fail\">Upload failed.</span>";
}
}
}
}
我在考虑动态编写appsetting? 我做错了吗?
修改:稍微澄清一下。上面的代码片段是WebForm背后的ASPX代码。 SpreadSheetFile是一个asp:FileUpload控件。正在运行的单元测试是更多的集成测试,因为它们在物理电子表格上运行。在我的测试中,我将其从App_Data(电子表格位于svn中)复制到单元测试可以访问的目录中。
要求是我提供了一种机制来验证电子表格,然后在其他Web应用程序中更新它。所以我认为我可以重复使用测试,但看起来并不好!