Sco*_*oon 20 .net javascript c# unit-testing codedom
我想从C#程序集中执行JavaScript代码,并将JavaScript代码的结果返回给调用的C#代码.
定义我不想做的事情更容易:
我不是试图从我的代码背后调用网页上的JavaScript函数.
我不是要加载WebBrowser控件.
我不想让JavaScript对服务器执行AJAX调用.
我想要做的是在JavaScript中编写单元测试,然后单元测试输出JSON,即使是纯文本也没问题.然后我想要一个通用的C#class/executible,可以加载包含JS的文件,运行JS单元测试,废弃/加载结果,并在后期构建任务中返回带有详细信息的通过/失败.
我认为使用旧的ActiveX ScriptControl是可能的,但似乎应该有一种.NET方法来实现这一点,而不使用SilverLight,DLR或其他尚未发布的东西.有人有主意吗?
namespace Microsoft.JScript.Vsa
{
[Obsolete("There is no replacement for this feature. " +
"Please see the ICodeCompiler documentation for additional help. " +
"http://go.microsoft.com/fwlink/?linkid=14202")]
Run Code Online (Sandbox Code Playgroud)
澄清:我们对使用JSUnit框架用JavaScript编写的JavaScript函数进行了单元测试.在我们的构建过程中,我们必须手动加载网页并单击按钮以确保所有JavaScript单元测试都通过.我希望能够在运行后自动C#单元测试的后期构建过程中执行测试,并报告C#单元测试的成功/失败,并将它们用作指示是否构建被打破.
代码应该是非常自我解释的,所以我只是发布它.
<add assembly="Microsoft.Vsa, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies>
Run Code Online (Sandbox Code Playgroud)
using Microsoft.JScript;
public class MyClass {
public static Microsoft.JScript.Vsa.VsaEngine Engine = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
public static object EvaluateScript(string script)
{
object Result = null;
try
{
Result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);
}
catch (Exception ex)
{
return ex.Message;
}
return Result;
}
public void MyMethod() {
string myscript = ...;
object myresult = EvaluateScript(myscript);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 1
您可以使用 JSUnit 服务器从 Nant 内部运行 JSUnit,它是用 java 编写的,没有 Nant 任务,但您可以从命令提示符运行它,结果记录为 XML,您可以将它们与构建报告集成过程。这不会是您的 Nunit 结果的一部分,而是一份额外的报告。如果其中任何一个测试失败,我们的构建就会失败。我们正是使用 CC.Net 来做到这一点。
归档时间: |
|
查看次数: |
14204 次 |
最近记录: |