我有以下遗留代码:
public class MyLegacyClass
{
private static final String jndiName = "java:comp/env/jdbc/LegacyDataSource"
public static SomeLegacyClass doSomeLegacyStuff(SomeOtherLegacyClass legacyObj)
{
// do stuff using jndiName
}
}
Run Code Online (Sandbox Code Playgroud)
这个类在J2EE-Container中工作.
现在我想测试容器外面的类.
什么是最好的策略?基本上允许重构.
允许访问LegacyDataSource(测试不必是"纯"单元测试).
编辑:不允许引入其他运行时框架.
是否有.NET的无头浏览器?
我在测试环境中寻找这个.
来自Java我想到了类似于HtmlUnit(http://htmlunit.sourceforge.net/)的东西,它本身就是Canoo WebTest或Celerity等不同高级工具的基础.
我想在.Net环境中为Web应用程序创建自动UI测试,但不使用Browser-Remoting(Watin,Selenium ...)
如果可能的话,我想坚持使用.Net解决方案并避免使用Java或Ruby工具.
有什么选择?你们在干什么?
谢谢
我不了解映射双向列表时Hibernate的行为.Hibernate生成的SQL语句对我来说似乎不是最优的.有人可以开导我吗?
场景如下:我有一对多的亲子关系.我用双向列表映射这种关系.
根据Hibernate Annotation Reference Guide(章节:与索引集合的双向关联),映射应如下所示:
@Entity
public class Parent {
@Id @GeneratedValue private long id;
@Version private int version;
private String name;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "parent_id", nullable=false)
@org.hibernate.annotations.IndexColumn(name = "parent_index")
List<Child> children = new ArrayList<Child>();
...
@Entity
public class Child {
@Id @GeneratedValue private Long id;
@Version private int version;
private String name;
@ManyToOne
@JoinColumn(name = "parent_id", updatable = false, insertable = false, nullable=false)
private Parent parent;
...
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下,Hibernate在持有一个子节点的父节点时会生成三个SQL语句:
Hibernate: insert into Parent (name, version, …Run Code Online (Sandbox Code Playgroud) 在WebStorm中编辑在VisualStudio上创建的打字稿项目正在回复此错误:
错误:(1,1)TS1148:除非提供了"--module"标志,否则无法编译外部模块.
代码很简单,如下所示:
在文件Test.ts中
class helloWorld{
}
export = helloWorld;
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助
EDITED
我忘了提到我正在使用MAC.
在进入帖子之后,在我找到解决方案的过程中,我尝试在VisualStudio Code for Mac中编译网页,我遇到了同样的问题,那就是认识到问题不是IDE而是共同点,我没弄清楚.
在fedemp上回答这句话触发了一些:
一个是在编译时使用标志:tsc --module commonjs或--module amd.
所以我转到Webstorm的首选项 - >语言和框架 - > TypeScript和选项"命令行选项:"我添加了--module amd并完成了!
我要求最终用户可以更改本地化资源,并且应用程序中应该可以看到更改,而无需重新启动应用程序.
更新以澄清场景:
我正在谈论在运行时更改本地化资源.可以说我在页面的德语翻译中有一个拼写错误.然后一些管理员用户应该有可能在运行时更改该错字.应该不需要重新部署或重新启动,以便在UI中反映此更改.
我正在使用ASP.NET MVC3.
我有什么选择?
我一直在研究编写一个从数据库加载资源的自定义ResourceProvider.
这似乎没有太大的努力,但到目前为止我指出了两个缺点:
还有什么其他选择?是否可以在运行时操作已部署的resx文件?
但我怀疑应用程序在检测到这些更改时会自动"重新启动":我怀疑ASP.NET意识到resx文件已经更改,然后它会回收应用程序池并动态编译新的resx文件.
它是否正确?有没有办法解决?
我还没有考虑在部署之前将资源编译成附属程序集.这甚至是Web应用程序的推荐方案吗?
但即使使用已编译的附属程序集,我怀疑ASP.NET会在动态更改这些程序集时重新启动应用程序.它是否正确?
我对如何满足原始要求的经验感兴趣?我会对我上面提到的选项的任何评论感兴趣.
我有两个源可观察量.我想合并两个源可观察对象,但是只要其中一个源可观察对象完成,合并的可观察对象就会完成.
期望的行为:
Source 1: ---1--------3--4-----------------------------x
Source 2: -------2----------x
"merged" ---1---2----3--4--x
Run Code Online (Sandbox Code Playgroud)
如果其中一个源出现错误,则错误应传播到合并的observable:
Source 1: ---1--------3--4-----------------------------x
Source 2: -------2----------e
"merged" ---1---2----3--4--ex
Run Code Online (Sandbox Code Playgroud)
"merge"运算符仅在两个源完成时完成合并流:
Source 1: ---1--------3--4-----------------------------x
Source 2: -------2----------x
"merged" ---1---2----3--4-----------------------------x
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现我想要的行为?
为了熟悉RX,我正在寻找RX在"真实世界"项目中使用的例子.
我对.NET版本或JavaScript版本感兴趣.对封闭源项目的引用会很有趣.开源项目会更有趣.
为什么RX是这些项目的不错选择也很有趣.
我不是在寻找教程或介绍.
在ASP.NET MVC6中wwwroot,默认情况下提供静态文件.
该目录由密钥wwwroot定义(如下所述:http://docs.asp.net/en/latest/fundamentals/static-files.html)project.jsonwebroot
我想知道是否可以webroot在运行时(启动时)以编程方式设置它.
我想webroot在运行时切换,具体取决于在调试或生产模式下运行.由于我的静态assests(JS,CSS ...)是在构建时处理的(连接,缩小......),我认为这是拥有源资源的目录和包含优化资产的目录的最佳方法(构建)输出).
在运行时,我想webroot在生产模式下运行时指向优化的资产.
有没有人想出如何以webroot编程方式设置?
更新2015-11-19:在我的场景中,我只想使用静态文件.正如答案所指出的,可以使用TagHelpers实现不同资产之间的切换(http://blogs.msdn.com/b/cdndevs/archive/2015/08/06/a-complete-guide-to-the-mvc -6-tag-helpers.aspx)当使用Razor的html服务器端渲染时.
Npm允许在项目中使用同一软件包的多个版本。这是一个强大的功能。
但是,在大多数前端项目中,我认为不希望依赖于不同版本的同一库。
对不同版本的同一库有依赖性意味着最终用户将必须多次加载给定的库(作为单独的请求或作为更大捆绑包的一部分)。
但是,如果使用npm来管理前端项目的依赖项,则可以很快获得对不同版本中相同库的依赖项。
我认为在大多数情况下这是不希望的,而且大多数时候我们甚至都不了解这种情况。
一个简单的情况,我们最终遇到这种情况:
在某个时间点安装react-router和history在项目中:
npm i -S react-router@1.0.0-rc1
npm i -S history@1.17.0
Run Code Online (Sandbox Code Playgroud)
当时react-router有一个依赖history@1.17.0。因此,您的整个项目仅依赖于此版本的history。
稍后,您决定升级到以下最新版本react-router:
npm i -S react-router@2
Run Code Online (Sandbox Code Playgroud)
现在react-router依赖history@2。
因此,您的项目现在已经依赖于history@1.17.0和传递依赖于history@2。
的两个版本history都包含在您的中npm_modules。
如果您使用的是Webpack或Browerify之类的模块捆绑程序,则最终会得到包含两个版本的的捆绑包history。
很可能您没有注意到。但是,如果您会注意到,则可能会将直接依赖项升级为`history @ 2。
我们如何处理这个问题?
我们如何找出前端项目是否依赖于不同版本的同一库?
我们如何避免最终获得比应有的束更大的束?
我知道从技术上讲npm / Webpack / Browserify在捆绑包中包含对不同版本的同一库的依赖关系是正确的。但是我正在寻找一种方法,以使其易于观察到这种情况的发生,以便开发人员可以采取步骤来优化依赖关系。
我还在此仓库中重新创建了示例:https : //github.com/jbandi/npm-package-problems
Given a project where the package-lock.json is managed in source control with the goal that all developers on the team get exactly the same dependencies.
From the documentation of npm I think developers should use npm ci to set up their development environment and probably also later when dependencies are updated.
However the instructions I see in typical npm projects is still to use npm install.
Is there a reason developers should use npm install instead of npm ci …
javascript ×3
.net ×2
asp.net ×2
npm ×2
testing ×2
automation ×1
browserify ×1
c# ×1
hibernate ×1
java ×1
jpa ×1
list ×1
localization ×1
mapping ×1
npm-ci ×1
refactoring ×1
rx-java ×1
rx-java2 ×1
rxjs ×1
static ×1
typescript ×1
web-testing ×1
webpack ×1
webstorm ×1
webtest ×1